ASSEMBLER UEXIT CSECT SAVE (14,12) BALR R12,0 USING *,R12 ST R13,EXITSV+4 SAVE CALLERS SAVE AREA POINTER LA R13,EXITSV ESTABLISH OWN SAVE AREA ST R1,PARMADR SAVE PASSED PARM LIST ADDRESS L R2,0(R1) FLAG ADDRESS CLC 0(4,R2),=X'FFFFFFFF' IS THIS AN EOF CALL BE CLEOF YES * EXAMINE RECORD, DETERMINE ACTION .......... RESTORE L R1,PARMADR ADDRESS OF FAVERS PARM LIST L R2,0(R1) GET FLAG ADDRESS LA R3,4 CODE TO RESTORE A RECORD ST R3,0(R2) SET FLAG VALUE B EXITRTN RETURN DELETE L R1,PARMADR ADDRESS OF FAVERS PARM LIST L R2,0(R1) GET FLAG ADDRESS LA R3,8 CODE TO DELETE A RECORD ST R3,0(R2) SET FLAG VALUE B EXITRTN RETURN MODIFY L R1,PARMADR ADDRESS OF PASSED PARM LIST L R2,0(R1) GET PASSED FLAG ADDRESS ST R2,XPFLAGA SET PASSED FLAG ADDR IN GVMODINS PARMS LA R3,12 MODIFY FLAG CODE ST R3,0(R2) SET IN FLAG LA R4,WORKARE ADDRESS OF MODIFIED RECORD ST R4,XPRECA SET IN PARM LIST LA R4,NEWRL ADDRESS LENGTH OF MODIFIED RECORD ST R4,XPRECLA SET IN PARMS B CALLSUB CALL GVMODINS
INSERT L R1,PARMADR ADDRESS OF PASSED PARM LIST L R2,0(R1) GET PASSED FLAG ADDRESS ST R2,XPFLAGA SET PASSED FLAG ADDR IN GVMODINS PARMS LA R3,16 INSERT FLAG CODE ST R3,0(R2) SET IN FLAG LA R4,WORKARE ADDRESS OF RECORD TO BE INSERTED ST R4,XPRECA SET IN PARM LIST LA R4,NEWRL ADDRESS LENGTH OF NEW RECORD ST R4,XPRECLA SET IN PARMS B CALLSUB CALL GVMODINS CALLSUB LA R1,XPARMS ADDRESS OF GVMODINS PARMS MVI XPRECA,X'80' END OF PARM LIST L R15,=V(GVMODINS) ADDRESS OF SUBROUTINE BALR R14,R15 GO TO GVMODINS B EXITRTN RETURN CLEOF EQU * B EXITRTN FINAL RETURN EXITRTN L R13,EXITSV+4 RESTORE CALLERS SAVE POINTER LM R14,R12,12(R13) RESTORE CALLERS REGS BR R14 RETURN TO CALLER XPARMS DS 0F GVMODINS PARM LIST XPFLAGA DS F ORIGINAL FLAG ADDRESS PASSED TO THE EXIT XPRECLA DS F INSERT OR MODIFY RECORD LENGTH XPRECA DS F ADDRESS OF MODIFY OR INSERT RECORD * WORK AREA PARMADR DS F SAVE PARM LIST ADDRESS EXITSV DS 18F SAVE AREA WORKAREA DS ... RECORD WORK AREA NEWRL DS F LENGTH OF NEW OR MODIFIED RECORD END
|
Copyright © 2011 CA.
All rights reserved.
|
|