I coded it as follows.  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
>>
>

Reply via email to