[Info-vax] Local Versus Global Command Options

Simon Clubley clubley at remove_me.eisner.decus.org-Earth.UFP
Fri Feb 14 14:02:47 EST 2025


On 2025-02-14, Arne Vajhøj <arne at 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 at remove_me.eisner.decus.org-Earth.UFP
Walking destinations on a map are further away than they appear.


More information about the Info-vax mailing list