Sujet : Re: Local Versus Global Command Options
De : arne (at) *nospam* vajhoej.dk (Arne Vajhøj)
Groupes : comp.os.vmsDate : 14. Feb 2025, 17:33:32
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vonr8r$3ghb6$1@dont-email.me>
References : 1 2
User-Agent : Mozilla Thunderbird
On 2/14/2025 8:38 AM, Simon Clubley wrote:
On 2025-02-13, Lawrence D'Oliveiro <ldo@nz.invalid> wrote:
What would DCL-style syntax for ffmpeg look like? I suppose one
obvious equivalence would be
>
ffmpeg -
«infile-1»/«local-input-options-1»,«infile-2»/«local-input-options-2»,... -
«outfile-1»/«local-output-options-1»,«outfile-2»/«local-output-options-2»,... -
>
(being very careful about where the commas go), but what about the
syntax for filtergraphs? Would it be something like
>
/vf=(«filter-name-1»=«filter-params-1»,«filter-name-2»=«filter-params-2»...)
>
Does DCL have provision for this sort of complexity?
Not in any meaningful way. There's no way to validate the syntax or
parameters of a filter or other ffmpeg syntax with DCL. For a simple
example, when merging two files, one with an audio stream and one with
a video stream, into a MP4 output container then specifying the input and
output video stream numbers would be a parameter along the lines of "0:v:0".
How would you even specify in DCL the first and last fields are numbers
and the middle field is a letter from a list of valid values ?
You can use DCL syntax in the way you specify, but the vast majority
of the parsing would still have to be done in ffmpeg as it is at the
moment. DCL syntax doesn't really give you anything extra.
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\
Arne