Deutsch English Français Italiano |
<voo40m$3jej5$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> Newsgroups: comp.os.vms Subject: Re: Local Versus Global Command Options Date: Fri, 14 Feb 2025 19:02:47 -0000 (UTC) Organization: A noiseless patient Spider Lines: 84 Message-ID: <voo40m$3jej5$1@dont-email.me> References: <volt3s$33lo1$1@dont-email.me> <vonh1j$3fukn$1@dont-email.me> <vonr8r$3ghb6$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Injection-Date: Fri, 14 Feb 2025 20:02:48 +0100 (CET) Injection-Info: dont-email.me; posting-host="12000ad02e6aee07ff3e3be4e48dc90d"; logging-data="3783269"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+4BHxvVLrSurq/iKZk8IT6ILaHgSezqp8=" User-Agent: slrn/0.9.8.1 (VMS/Multinet) Cancel-Lock: sha1:8ChZuAJuhmxPt2rLA5gJW56Coxw= Bytes: 3933 On 2025-02-14, Arne Vajhøj <arne@vajhoej.dk> wrote: > > You can define a bit in CLD. Including specifying that > something is a number and something else is from an > enumeration list. > > $ type fun3.cld > define verb fun3 > image "sys$disk:[]fun3" > parameter p1, value(type=$file, list, required) > qualifier q, value(type=threeitems, list, required), placement=local > define type threeitems > keyword a, value(type=$number, required) > keyword b, value(type=$quoted_string, required) > keyword c, value(type=myenum, required) > define type myenum > keyword x > keyword y > keyword z > $ type fun3.pas > [inherit('sys$library:pascal$cli_routines')] > program fun3(input,output); > > type > pstr = varying [255] of char; > > var > fnm, a, b, c : pstr; > > begin > while odd(cli$get_value('P1', fnm.body, fnm.length)) do begin > write(fnm); > if odd(cli$present('Q')) then begin > cli$get_value('Q.A', a.body, a.length); > write(' A=', a); > cli$get_value('Q.B', b.body, b.length); > write(' B=', b); > cli$get_value('Q.C', c.body, c.length); > write(' C=', c); > end; > writeln; > end; > end. > $ pas fun3 > $ lin fun3 > $ set comm fun3 > $ fun3 x.dat/q=(a:1,b:"This is x",c:x), y.dat/q=(a:2,b:"This is y",c:y), > z.dat/q=(a:3,b:"This is z",c:z) > x.dat A=1 B="This is x" C=X > y.dat A=2 B="This is y" C=Y > z.dat A=3 B="This is z" C=Z > $ on error then continue > $ fun3 x.dat/q=(a:x,b:"This is x",c:x), y.dat/q=(a:2,b:"This is y",c:y), > z.dat/q=(a:3,b:"This is z",c:z) > %DCL-W-NUMBER, invalid numeric value - supply an integer > \X\ > $ fun3 x.dat/q=(a:1,b:"This is x",c:xdat), y.dat/q=(a:2,b:"This is > y",c:y), z.dat/q=(a:3,b:"This is z",c:z) > %DCL-W-IVKEYW, unrecognized keyword - check validity and spelling > \XDAT\ > But it is no longer ffmpeg syntax, but convoluted DCL syntax. It also doesn't help you with the main problem I mentioned, which is parsing and validating the filter syntax. To give you an idea of the scale of the problem, here is the mplayer man page (which I know a lot better than the ffmpeg filters): https://linux.die.net/man/1/mplayer That is a _very_ long man page, so search for "-vf-add" and you should be in a section marked "Video Filters". In that section are the list of available filters, starting with the crop one I mentioned earlier. How would you turn the list of filters, each with their own syntax, into something that can be validated by DCL ? As a reminder, it is critical that the filters are available to the program in the order they were specified on the command line. Simon. -- Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP Walking destinations on a map are further away than they appear.