What I see is multiple lines, with a new line after the comma, making the comma 
a continuation character. For that to be valid on a single line you must remove 
the comma and insert semicolons to separate statements.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3

________________________________________
From: IBM Mainframe Discussion List [[email protected]] on behalf of 
Bernd Oppolzer [[email protected]]
Sent: Sunday, September 11, 2022 3:57 AM
To: [email protected]
Subject: Re: Why is my second Rexx SYSCALLS read failing?

Why is there suddenly the variable RC used to test the outcome of OPEN?
In the examples in the IBM doc I see:

|'open' path, O_rdwr+O_creat+O_trunc, 660 if retval=-1 then do say 'file
not opened, error codes' errno errnojr return end fd=retval |that is:

the returned fd and the code to test the success of OPEN
is both in the variable retval, not RC.

And: it would be better to assign the value of retval to
fd after the test for success.

Kind regards

Bernd


Am 11.09.2022 um 01:45 schrieb Charles Mills:
> I am working on a Rexx program that reads one or more UNIX files. (And 
> please, don't beat me up for Rexx; we can have the "superiority of Python" 
> discussion another day.)
>
> The logic works for the first file, but if there is a second file the read 
> fails with a -21, which I interpret as "bad fd." (Am I wrong about that?)
>
> Here are the read and open routines. The read routine gets called with the 
> file name. It's getting that right because the first file works (and the 
> second file works if it is first). There is no error printed by FileOpen. I 
> can see from the Print at the start of ReadOneFile that the filename is 
> correct. How could the fd be bad if the open succeeds?
>
> ReadOneLogFile:
>    If IsVerbose Then Call Print "ReadOneLogFile:" Arg(1)
>
>    ADDRESS SYSCALL
>    Call FileOpen Arg(1)
>
>    Do Forever
>      "read" Filefd "record" LogFileRecLen
>      If Length(record) <> LogFileRecLen Then Leave
>
>      /* snip */
>
>      End   /* Read records forever */
>
>    "close" Filefd
>
>    Return
>
> FileOpen:
>    /* Open the file */
>    "open" Arg(1) O_RDONLY
>    Filefd = retval
>    if RC = -1 Then Do
>      Call Print "Error from Log File open. RC =" RC errno errnojr
>      Signal EndProgram
>      End  /* RC <> 0 */
>    Return
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email [email protected]  with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to