[Info-vax] %PCSIUI-E-PRIVCLASS1 when using PRODUCT with PIPE

Chris Scheers chris at applied-synergy.com
Tue Dec 11 16:48:38 EST 2018


Tim Sneddon wrote:
> Jairo Alves <jairo.ptbr at gmail.com> wrote:
>>> That is a DCL command procedure invocation.  That command procedure 
>>> specifies the input be from the TT device.  That then creates the DCL 
>>> equivalent of a subshell.  And the output from DCL procedure 
>>> invocations can be redirected.
>>>
>> I see. It's a subshell, not a "pseudo-command file". I tried out of
>> curiosity to run a loop in that command, and sure enough, DCL throws an
>> exception, precisely because it is not emulating a command file, but
>> instead a sub shell, where loops are forbidden.
>>
>> I> @TT:
>> _I> n = 0
>> _I> loop:
>> %DCL-W-NOLBLS, label ignored - use only within command procedures
>>  \LOOP:\
>> _I> wr sys$output n
>> 0
>> _>  Exit
>>
> 
> It is being treated as a command procedure.  Years ago I investigated
> this as I was trying to figure a way to provide a better implementation
> of $(SHELL ...) for MMK.  DCL actually checks to see if the command
> procedure is disk based or not.  If it is disk based, then certain
> constructs become possible, like multi-line IF-THEN-ELSE-ENDIF, loops,
> etc. If not, then you get single-line DCL.
> 
> If I had more time I'd dig out the specific place in the listings
> where this is checked.  Maybe VAXman (a.k.a Brian) has it memorised,
> he has done quite of bit in the DCL space over the years.
> 
> Regards, Tim.

IIRC, DCL records the RFA for labels and ELSE/ENDIFs statement so that 
they can be directly skipped to.

If it is not an RMS disk file, records don't have an RFA.

Another way to put it: The statements are not recorded and you can't 
rewind a terminal.

-- 
-----------------------------------------------------------------------
Chris Scheers, Applied Synergy, Inc.

Voice: 817-237-3360            Internet: chris at applied-synergy.com
   Fax: 817-237-3074



More information about the Info-vax mailing list