Last active
August 29, 2015 14:22
-
-
Save JohnArchieMckown/2de9d5d8b41095bc5f47 to your computer and use it in GitHub Desktop.
Example to wrap the 3270 file transfer program, IND$FILE, in another CSECT in order to: (1) make it run non-swappable (for speed) and (2) write the IND$FILE command to the z/OS SYSLOG for auditing / logging purposes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//IND$FILE JOB (H00000I),'IND$FILE', 00010000 | |
// CLASS=Z, 00020000 | |
// MSGCLASS=X, 00030000 | |
// NOTIFY=&SYSUID 00040000 | |
//STEP010 EXEC ASMACL,PARM.ASM='OBJECT,NODECK,BATCH' 00050000 | |
//ASM.SYSLIB DD DSN=SYS1.MACLIB, 00060000 | |
// DISP=SHR 00070007 | |
// DD DSN=SYS1.MODGEN, 00080000 | |
// DISP=SHR 00090007 | |
//ASM.SYSIN DD * 00120000 | |
* BE SURE TO PUT IND$FILE IN SYS1.PARMLIB(IKJTSO00) AS AN 00130000 | |
* AUTHORIZED COMMAND! 00140000 | |
* 00150000 | |
YREGS 00160000 | |
IND@FILE CSECT 00170000 | |
USING *,R11 00180000 | |
SAVE (14,12),,IND@FILE\&SYSDATE\&SYSTIME 00190000 | |
LR R11,R15 00200000 | |
CNOP 0,4 00210000 | |
BAS R1,*+76 00220000 | |
DC 18A(0) 00230000 | |
ST R13,4(,R1) SAVE OLD S/A POINTER IN NEW S/AW 00240000 | |
ST R1,8(,R13) SAVE NEW S/A POINTER IN OLD S/A 00250000 | |
LR R13,R1 POINT TO NEW S/A 00260000 | |
L R1,4(,R13) POINT BACK 00270000 | |
L R1,24(,R1) RESTORE ORIGINAL R1 00280000 | |
B GO GO TO ACTUAL CODE 00290000 | |
GOBACK DS 0H 00300000 | |
L R1,4(,R13) GET OLD S/A POINTER 00310000 | |
XC 4(4,R13),4(R13) KILL BACK CHAIN 00320000 | |
XC 8(4,R1),8(R1) KILL FORWARD CHAIN 00330000 | |
LR R13,R1 RESTORE ENTRY S/A POINTER 00340000 | |
LR R15,R5 LOAD CONDITION CODE 00350000 | |
RETURN (14,12),T,RC=(15) GET OTTA HERE! 00360000 | |
GO DS 0H 00370000 | |
OI OKSWAP+1,X'F0' 00380000 | |
LR R2,R1 00390000 | |
USING PSA,R0 00400000 | |
L R3,PSATOLD MY TCB 00410000 | |
USING TCB,R3 00420000 | |
DROP R0 00430000 | |
L R3,TCBTIO MY TIOT 00440000 | |
DROP R3 00450000 | |
USING TIOT,R3 00460000 | |
MVC JOBNAME,TIOCNJOB 00470000 | |
DROP R3 00480000 | |
USING CPPL,R2 00490000 | |
L R3,CPPLCBUF GET ADDR OF COMMAND BUFFER 00500000 | |
DROP R2 00510000 | |
LH R4,0(,R3) LENGTH OF COMMAND BUFFER 00520000 | |
SH R4,=H'5' LENGTH OF COMMAND 00530000 | |
BM NODATA 00540000 | |
C R4,=F'99' 00550000 | |
BL NOCH 00560000 | |
L R4,=F'99' 00570000 | |
NOCH DS 0H 00580000 | |
EX R4,MOVEIT 00590000 | |
NODATA DS 0H 00600000 | |
LA R1,LDATA 00610000 | |
BCTR R1,0 00620000 | |
CLI 0(R1),C' ' 00630000 | |
BE *-6 BACK TO THE BCTR 2 INSTRU UP 00640000 | |
MVC 1(4,R1),MCSFLAGS 00650000 | |
S R1,=A(LOGIT-1) 00660000 | |
STH R1,LOGIT 00670000 | |
LA R1,LOGIT 00680000 | |
MVI SORE,C'S' 00690000 | |
SLR R0,R0 00700000 | |
WTO MF=(E,(1)) 00710000 | |
* 00720007 | |
* SEE IF I'M RUNNING AUTHORIZED 00730007 | |
TESTAUTH FCTN=1,RBLEVEL=1 00740000 | |
LTR R15,R15 00750000 | |
BNZ CONTIN1 00760000 | |
* 00770007 | |
* OK, I'M AUTHORIZED, SO LETS MAKE THE ADDRESS SPACE NON-SWAPPABLE 00780007 | |
LA R1,WAITECB 00790000 | |
XC WAITECB,WAITECB 00800000 | |
SYSEVENT TRANSWAP 00810000 | |
LTR R5,R15 00820000 | |
BNZ CONTIN2 00830007 | |
NI OKSWAP+1,X'0F' 00840000 | |
WAIT 1,ECB=WAITECB 00850000 | |
CONTIN2 DS 0H 00860007 | |
ESTAEX RECOVER, LABEL OF RECOVERY ROUTINE X00870007 | |
CT, CREATE A NEW ESTAE LEVEL X00880007 | |
RECORD=NO, NO LOGREC RECORD X00890007 | |
CANCEL=NO, DO NOT INTERRUPT RECOVERY X00900007 | |
TERM=YES INTERCEPT X22 ABENDS AS WELL 00910007 | |
CONTIN1 DS 0H 00920000 | |
STCOM NO PREVENT BREAK-IN BY SEND COMMAND 00930000 | |
STBREAK NO 00940000 | |
L R1,4(,R13) 00950000 | |
L R15,=V(INDFXFER) 00960000 | |
DROP R11 00970000 | |
LM R0,R12,20(R1) 00980000 | |
BASR R14,R15 00990000 | |
LR R14,R15 01000000 | |
BASR R11,0 01010000 | |
USING *,R11 01020000 | |
L R11,=A(IND@FILE) 01030000 | |
DROP R11 01040000 | |
USING IND@FILE,R11 01050000 | |
ESTAEX 0 01060007 | |
LA R1,LOGIT 01070000 | |
MVI SORE,C'E' 01080000 | |
SLR R0,R0 01090000 | |
WTO MF=(E,(1)) 01100000 | |
OKSWAP B RET1 01110000 | |
SYSEVENT OKSWAP 01120000 | |
RET1 DS 0H 01130000 | |
STBREAK YES 01140000 | |
STCOM YES 01150000 | |
LR R5,R14 01160000 | |
B GOBACK 01170000 | |
RECOVER DS 0H 01180007 | |
PUSH USING 01190007 | |
USING RECOVER,R15 01200007 | |
L R11,=A(IND@FILE) 01210007 | |
DROP R15 01220007 | |
POP USING 01230007 | |
C R0,TESTNOSDWA 01240007 | |
BE NOSDWA RATS! 01250007 | |
USING SDWA,R1 01260007 | |
MVC SAVE_ABCC,SDWAABCC 01270007 | |
DROP R1 01280007 | |
B RECOV1 01290007 | |
NOSDWA DS 0H 01300007 | |
ST R1,SAVE_ABCC 01310007 | |
SLR R1,R1 01320007 | |
RECOV1 DS 0H 01330007 | |
LA R1,LOGIT 01340007 | |
MVI SORE,C'X' 01350007 | |
SLR R0,R0 01360007 | |
WTO MF=(E,(1)) 01370007 | |
SLR R15,R15 NO RECOVER 01380007 | |
BR R14 RETURN TO SYSTEM 01390007 | |
MOVEIT MVC FIRST100(0),4(R3) 01400000 | |
LTORG * 01410000 | |
TESTNOSDWA DC F'12' 01420007 | |
WAITECB DS F 01430000 | |
MCSFLAGS DC XL2'00000020' 01440000 | |
LOGIT DC AL2(0),XL2'8200' 01450000 | |
JOBNAME DC CL8' ' 01460000 | |
DC C' ' 01470000 | |
SORE DC C'S' 01480000 | |
DC C' ' 01490000 | |
FIRST100 DC CL100' ' 01500000 | |
LDATA EQU * 01510000 | |
*OGIT WTL 'IND@FILE JOBNAMEX ',MF=L 01520000 | |
* WTO 'IND@FILE JOBNAMEX ',MF=L,ROUTCDE=11, 01530000 | |
* MCSFLAG=(HRDCPY) 01540000 | |
IHAPSA 01550000 | |
IKJTCB 01560000 | |
IKJUPT 01570000 | |
IKJCPPL 01580000 | |
IKJECT 01590000 | |
IKJPSCB 01600000 | |
TIOT DSECT 01610000 | |
IEFTIOT1 01620000 | |
END IND@FILE 01630000 | |
PUNCH ' REPLACE IND@FILE' 01640007 | |
PUNCH ' INCLUDE CMDLIB(IND$FILE)' 01650000 | |
PUNCH ' ENTRY IND@FILE' 01660000 | |
PUNCH ' SETCODE AC(1)' 01670000 | |
END 01680000 | |
//LKED.SYSLMOD DD DSN=SYS1.CMDLIB, 01690000 | |
// DISP=SHR 01700007 | |
//LKED.SYSLIB DD DSN=SYS1.LINKLIB, 01710000 | |
// DISP=SHR 01720007 | |
//LKED.CMDLIB DD DSN=SYS1.CMDLIB, 01730000 | |
// DISP=SHR 01740007 | |
//LKED.SYSIN DD * 01750000 | |
NAME IND@FILE(R) 01760000 | |
/* 01770000 | |
// 01780000 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment