Peter,

Well, he did say that it worked fine using temporary files, so I think he's
aware of your suggestion.

As he said, what he's trying is in the VMS Perl FAQ (at least the one on
www.sidhe.org).  

I could imagine that he has a program that generates DCL commands in response to
inputs and he wishes to get the ball rolling before all the inputs are complete.
This could speed things up.


> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Friday, February 18, 2000 1:31 PM
> To: [EMAIL PROTECTED]
> Cc: [EMAIL PROTECTED]
> Subject: RE: Executing DCL-commands from Perl programs
> 
> 
> Robert Sundstrom wrote:
> 
> > Hello all.
> > I have been trying to integrate DCL-scripts with 
> Perl-programs. It works
> > fine when one is using temporary files to build the sequence of
> > DCL-commands you want. On the VMS Perl FAQ I learned about 
> a method to
> > execute several DCL-commands in a row without using 
> temporary files. 
> > 
> > Unfortunately, it does not work well if you have a 
> DCL-script that ends
> > with exit 44, that is forcing an abort. The Perl program 
> never resumes
> > execution after the print statement. Something probably 
> aborts (just as it
> > is supposed to... :-), and control is never returned to Perl. 
> > 
> > I don't have enough VMS-diplomas to determine if this is a 
> feature, a
> > misfeature or a bug. I simply either want my Perl script to 
> abort as well,
> > or to be able to detect the EXIT parameter of the 
> DCL-script in my Perl
> > program. Does anyone have any advice on this matter?
> > 
> > This is my source code:
> > 
> > A.COM
> > 
> > $ EXIT 44
> > 
> > A.PL
> > 
> > open(CMD,"|\@sys\$input");
> > print CMD "\@a.com\n";
> > close(CMD);
> > exit;
> > 
> > A little transcript of my output:
> > 
> > ROBERT>type a.com
> > $ exit 44
> > 
> > ROBERT>perl a.pl
> > %SYSTEM-F-ABORT, abort
> >  Interrupt
> > 
> > ROBERT>stop
> 
> It is not clear to me why you wanted to open a pipe to this procedure,
> although in general I suppose you might want to.  Here for 
> illustration 
> purposes is a run of a perl program that @executes a DCL 
> procedure without
> the pipe:
> 
>  $ type a.com
>  $ write sys$output "hello from " + f$environment("PROCEDURE")
>  $ exit 44
>  $ type a.plx
>   print "Hello from $0\n";
>   print `\@a.com`;
>   print "goodbye from $0\n";
>  $ perl a.plx
>  Hello from a.plx
>  hello from USR:[PVHP]A.COM;1
>  %SYSTEM-F-ABORT, abort
>  goodbye from a.plx
> 
> I hope that helps you.
> 
> Peter Prymmer
> 

Reply via email to