/*REXX*/ "ISPEXEC LIBDEF ISPLLIB DATASET ID('SCOTTY.LOADLIB')" ADDRESS "TSO" /* USE STANDARD TSO ENVIRONMENT COMMANDS */ VSANCHOR='INIT' /* INITIALIZE RXVSAM ANCHOR */ FILENAME='SCOTTY.TEST.VSAM.FILE' /* FILE NAME */ SAY FILENAME 'ALLOCATED, OPENING RESET/UPDATE' ALLOC "FI(UPDATE) DSNAME('"FILENAME"')" /* ALLOCATE IT */ RC = RXVSAM("UPDATE", "OPENU") /* 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 /**/ SAY FILENAME 'OPENED FOR UPDATE. UPDATING RECORD.........' SKEY = "KEY=00000000000000000000000000000005" RC = RXVSAM("UPDATE", "READU", SKEY) /* CALL RXVSAM */ /* 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("UPDATE", "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 */ IF RESPONSE <> ">>EOF<<" THEN RCD = RESPONSE END NSPOT = POS("NUMBER", RCD) RCD = OVERLAY("NUUBOR", RCD, NSPOT) SAY ' ' SAY 'RECORD TO WRITE ' SAY RCD SAY C2X(RCD) QUEUE RCD RC = RXVSAM("UPDATE", "WRITE", SKEY) IF RC <> "00000000" /* HANDLE RETURN CODE */ THEN DO /**/ SAY "WRITE FAILED, RETURN CODE =" RC /**/ RC = RXVSAM("UPDATE", "CLOSE") /* MAKE SURE WE DONT */ /* GET A SA03 ABEND */ EXIT /* END THE PROGRAM */ END /**/ RC = RXVSAM("UPDATE", "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 */