Sorry, hit send too soon. Anyway... I coded it as follows--removing
full-line comments, etc. Still looking for hints. Thanks.
CARDASM HEADER VERSION='1.0',AUTHOR='DLC',DATE='(C)DEC25', X
BASE=10,SVAREA=SAVEAREA
OPEN CARDIN,LINEOUT OPEN SEQUENTIAL DTFS
GETCARD DS 0H
GET CARDIN GET A CARD
IF =C'/&&',(EQ,CLC),CARD_IA,BC,ENDIN IF END OF JOB
ENDIF JUST IN CASE...
IF =C'/+',(EQ,CLC),CARD_IA,BC,ENDIN CUSTOM END-OF-DATA
ENDIF
DATAIN DS 0H PROCESS INPUT CARDS
MVC LINEDATA,CARD_IA SEND INPUT CARD
PUT LINEOUT TO OUTPUT DEVICE
J GETCARD GO GET ANOTHER CARD
DATAERR DS 0H PROCESS ERROR CARDS
MVC CARD_IA,0(R1) GET ERROR CARD
J DATAIN GO PROCESS IT
ENDIN DS 0H
CLOSE CARDIN,LINEOUT CLOSE SEQUENTIAL DTFS
XR R15,R15 ZERO RETURN CODE
EXIT DS 0H PROGRAM EXIT
TRAILER RETCODE=R15,SVAREA=SAVEAREA
*
STORAGE DS 0D
SAVEAREA DS 9D
CARD_IA DS CL128
LINE_OA DS CL121
LINE_CC DC C' '
LINEDATA DC CL120' '
LTORG
CARDIN DTFCD DEVADDR=SYSRDR,DEVICE=3505,IOAREA1=CARD_IA,BLKSIZE=128, X
ERROPT=IGNORE,EOFADDR=DATAERR
LINEOUT DTFDI DEVADDR=SYSLST,IOAREA1=LINE_OA,RECSIZE=121
Sincerely,
Dave Clark
--
int.ext: 91078
direct: (937) 531-6378
home: (937) 751-3300
Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio 45439 USA
(937) 294-5331
On Fri, Dec 12, 2025 at 4:12 PM David Clark <[email protected]> wrote:
> OK, I made an attempt, but got the following. I coded it so I didn't have
> to test for EOF--meaning, I used a separate piece of code to handle the
> normal EOF but attempted to process the error card as usual. (At this
> point, I'm just trying to print out every card and error card that I read
> in.) I still need some hints/tips about trying to read past the /* card.
> Thanks.
>
> BG 0000 // JOB CARDASM TEST OF READING PAST /* EOD-OF-DATA CARD
> 16:07:39
> DATE 12/12/2025, CLOCK 16/07/39
> 16:07:39
> BG 0001 1R30I INVALID CCW - CCB ADDR=X'5002B8' XXCRDIN 44953, X'FEE'
> RC=0002,
> PARTITION BG
> 16:07:39
> BG 0001 1R30I CCB=00002005 00200003 00501090 00000000, ADDR=005002B8, BG
>
> BG 0001 1R30I CCW=00500161 20000078, ADDR=00501090, BG
> 16:07:39
> BG 0000 0P73I I/O ERROR
> 16:07:39
> BG 0000 0S00I JOB CARDASM CANCELED
> 16:07:39
> BG 0000 0S07I PROBLEM PROGRAM PSW = 071D1000 00117BDA
> 16:07:39
> BG 0000 0S29I DUMP STARTED
> 16:07:39
> BG 0000 0S30I DUMP STARTED. MEMBER=DBG00772.DUMP IN SUBLIB=SYSDUMP.SUBLIB
>
> BG 0000 1I51I DUMP COMPLETE
> 16:07:39
> BG 0000 1S78I JOB TERMINATED DUE TO PROGRAM ABEND
> 16:07:39
> BG 0000 EOJ CARDASM MAX.RETURN CODE=0016
> 16:07:39
> DATE 12/12/2025, CLOCK 16/07/39, DURATION 00/00/00
> 16:07:39
>
> Sincerely,
>
> Dave Clark
> --
> int.ext: 91078
> direct: (937) 531-6378
> home: (937) 751-3300
>
> Winsupply Group Services
> 3110 Kettering Boulevard
> Dayton, Ohio 45439 USA
> (937) 294-5331
>
>
> On Fri, Dec 12, 2025 at 3:41 PM David Clark <[email protected]> wrote:
>
>> I'm creating a VSE/Assembler program that will need to read past any /*
>> statements encountered; because, this program will be reading in REXX
>> procedure source code--which uses /* to begin comment lines and may start
>> in column 1. I have never done anything like this before.
>>
>> What tips/tricks can any of you offer for purposefully coding an
>> assembler program to ignore /* and look for /+ as the end-of-data
>> terminator (which is what the IBM VSE Librarian [LIBR] utility does when
>> CATALOGing a REXX procedure)?
>>
>> My research so far... I would like to handle my own EOF detection, but
>> it seems the DTFCD macro requires the EOFADDR parameter--though I did code
>> ERROPT=IGNORE. I can point EOFADDR into the middle of my read/write code
>> but I need to know how to test the DTF for EOF--since the error record
>> appears to only be an address in reg 1 and not written to the IO area.
>> Have I got that correct? The manual also states that an error indicator is
>> available in the CCB for output files--but not for input files. Thus, I
>> need to know how to test the DTF for EOF so that I can handle the
>> associated error.
>>
>> Sincerely,
>>
>> Dave Clark
>> --
>> int.ext: 91078
>> direct: (937) 531-6378
>> home: (937) 751-3300
>>
>> Winsupply Group Services
>> 3110 Kettering Boulevard
>> Dayton, Ohio 45439 USA
>> (937) 294-5331
>>
>