[Info-vax] /END=label

Marc Van Dyck marc.gr.vandyck at invalid.skynet.be
Fri Aug 31 17:38:30 EDT 2018


VAXman-  @SendSpamHere.ORG formulated the question :
> In article <mn.fc1f7e289c5c90ca.104627 at invalid.skynet.be>, Marc Van Dyck 
> <marc.gr.vandyck at invalid.skynet.be> writes:
>> Phillip Helbigundress to reply pretended :
>>> In article <pm1abq$r09$1 at dont-email.me>, Dave Froble
>>> <davef at tsoft-inc.com> writes: 
>>> 
>>>> What you're doing, as I understand it, is invoking a program from DCL, 
>>>> and then exiting the program.  
>>> 
>>> $ RUN PROGRAM
>>> $ IF $STATUS .EQS. END THEN GOTO END_HANDLING
>>> 
>>>> Personally, I find testing the result of 
>>>> the program exit, and taking appropriate action, rather elegant.
>>> 
>>> My impression is that he is not calling the program from a DCL 
>>> procedure, but rather from the DCL command line, as a DCL verb.  So 
>>> there is no fallback to a DCL GOTO after the program exits.
>> 
>> Yes it is implemented as a DCL command. And yes, if embedded in a
>> command procedure, I can test $STATUS and take action from that.
>> I would just be able to do
>> 
>> $ <my dcl command with parameters> /END=label
>> ..
>> ..
>> ..
>> $label:
>> 
>> Rather than
>> 
>> $ <my dcl command with parameters>
>> $ IF $STATUS .EQ. end THEN GOTO label
>> ..
>> ..
>> ..
>> $label:
>> 
>> Just like the DCL READ command does.
>> 
>> Simple, eh ?
>
> *IF* the label has already been encountered by DCL, then the label symbol 
> will maintain the RFA of the record.  *IF* not, then DCL must read (scan)
> the procedure to find the label, create a label symbol, associate it with
> the RFA and then, transfer control to that record.  I could tell you how
> to find the label symbol and even how to change DCL's stream to effectively
> branch to that record, but if that label symbol does not yet exist, you'd
> have to open and scan the procedure yourself and synthesize a label symbol.

Which is basically what DCL GOTO is doing, right ? Then the suggestion
below to use lib$do_command ("GOTO label") seems just fine to me. No
need to rewrite it. But thanks for the explanation.

-- 
Marc Van Dyck



More information about the Info-vax mailing list