/*REXX*/ /* "ISPEXEC LIBDEF ISPLLIB DATASET ID('IBMUSER.RXVSAM.LOAD')" */ ADDRESS "TSO" /* USE STANDARD TSO ENVIRONMENT COMMANDS */ VSANCHOR='INIT' /* INITIALIZE RXVSAM ANCHOR */ FILENAME='TR$I01.REXXA.KSDS' /*FILE NAME */ /* ALLOC "FI(INPUT) DSNAME('"FILENAME"')" */ /* ALLOCATE IT */ ALLOC "FI(RXVSAM) DSNAME('"FILENAME"') SHR" RC = RXVSAM("RXVSAM", "OPEN") /* CALL RXVSAM TO OPEN IT */ IF RC <> "00000000" /* IF BAD RETURN SAY SO AND XIT */ THEN DO /**/ SAY "OPEN FAILED, RETURN CODE =" RC /**/ EXIT /**/ END /**/ DO WHILE RESPONSE <> ">>EOF<<" /* ">>EOF<<" = RXVSAM END OF FILE */ RC = RXVSAM("RXVSAM", "READ", "20") /* CALL RXVSAM TO READ */ /* A MAX OF 1000 RECORDS */ /* INTO THE DATA STACK */ IF RC <> "00000000" /* HANDLE RETURN CODE */ THEN DO /**/ SAY "READ FAILED, RETURN CODE =" RC /**/ RC = RXVSAM("RXVSAM", "CLOSE") /* MAKE SURE WE DONT */ /* GET A SA03 ABEND */ EXIT /* END THE PROGRAM */ END /**/ DO QUEUED() /* WHILE DATA REMAINS ON THE STACK */ PULL RESPONSE /* GET THE NEXT RECORD */ SAY "DATA FROM READ=" /* SEND TO PRINT*/ SAY RESPONSE /* PRINT THE RECORD */ SAY C2X(RESPONSE) /* AND W/HEX DUMP */ END END /* AT >>EOF<< FALL THROUGH HERE.... */ RC = RXVSAM("RXVSAM", "CLOSE") /* CALL RXVSAM TO CLOSE IT */ IF RC <> "00000000" /* HANDLE RETURN CODE */ THEN DO /* AND SO FORTH..... */ SAY "CLOSE FAILED, RETURN CODE =" RC /**/ EXIT /**/ END /**/ /* FREE "ALL" */ /* FINALLY, RELEASE THE ALLOCATION */ "FREE F(RXVSAM)" /* FINALLY, RELEASE THE ALLOCATION */