[Info-vax] Can DCL be enhanced to report why a qualifier is ambiguous ?
Arne Vajhøj
arne at vajhoej.dk
Fri May 28 09:57:16 EDT 2021
On 5/27/2021 2:57 PM, Simon Clubley wrote:
> I've mentioned this before, but it would be really nice if DCL could
> be enhanced to list all the possible candidates in the error message
> if you enter an ambiguous keyword.
It must be in CLI$DCL_PARSE the magic should happen.
$ type pars1.cld
define verb pars
image "sys$disk:[]pars1.exe"
qualifier a1
qualifier a2
$ type pars1.pas
[inherit('sys$library:pascal$cli_routines')]
program pars1(input, output);
begin
if odd(cli$present('A1')) then writeln('A1') else writeln('not A1');
if odd(cli$present('A2')) then writeln('A2') else writeln('not A2');
end.
$ pas pars1
$ link pars1
$ set command pars1
$ pars
not A1
not A2
$ pars /a1
A1
not A2
$ pars /a
%DCL-W-ABKEYW, ambiguous qualifier or keyword - supply more characters
\A\
$ type pars2def.cld
module pars2def
define verb pars
qualifier a1
qualifier a2
$ type pars2.pas
[inherit('sys$library:pascal$lib_routines',
'sys$library:pascal$cli_routines')]
program pars1(input, output);
var
pars2def : [external] integer;
var
args : varying[255] of char;
begin
lib$get_foreign(args.body, 'Arguments: ', args.length);
if odd( cli$dcl_parse('pars ' + args, pars2def)) then begin
if odd(cli$present('A1')) then writeln('A1') else writeln('not A1');
if odd(cli$present('A2')) then writeln('A2') else writeln('not A2');
end;
end.
$ set command/object pars2def
$ pas pars2
$ link pars2 + pars2def
$ pars := $sys$disk:[]pars2
$ pars
not A1
not A2
$ pars /a1
A1
not A2
$ pars /a
%CLI-W-ABKEYW, ambiguous qualifier or keyword - supply more characters
\A\
%TRACE-W-TRACEBACK, symbolic stack dump follows
image module routine line rel PC abs PC
0 FFFFFFFF800833F8
FFFFFFFF800833F8
DCL ?
?
0 FFFFFFFF800833F8
FFFFFFFF800833F8
DCL ?
?
0 FFFFFFFF800833F8
FFFFFFFF800833F8
pars2 0 0000000000020644
0000000000020644
pars2 PARS1 PARS1 12 000000000000012C
000000000002012C
0 FFFFFFFF80340964
FFFFFFFF80340964
%TRACE-I-END, end of TRACE stack dump
Arne
More information about the Info-vax
mailing list