EXEC XCOMP XCOMP TEST3 XCOMP TEST4 -M9 -W FILEDEF INPUT TERM ( RECFM V FILEDEF OUTPUT TERM ( RECFM V FILEDEF PASTRACE TERM ( RECFM F FILEDEF INFILE1 DISK XCOMP TEST3 ( RECFM F FILEDEF INFILE2 DISK XCOMP TEST4 ( RECFM F EXEC PASRUN XCOMP -M9 -W XCOMP (Pascal Version 1.1) - 20.10.2016 Vergleich Datei 1 <<< mit Datei 2 >>> Eingelesene Parameter: parm: length = 7 parm: <-M9 -W > eingelesen: minmatch : 9 ================================================================ 1 <<< RUNPARM TITLE 'RUN PROGRAM WITH PARM FIELD' 2 <<< * 3 <<< ************************************************************** 4 <<< * Source from COBOL disk 5 <<< * original RUNPARM 6 <<< ************************************************************** 7 <<< * 8 <<< RUNPARM START 0 9 <<< SAVE (14,12),,RUNPARM SAVE REGISTERS 10 <<< LR R12,R15 LOAD BASE REGISTER 11 <<< USING RUNPARM,R12 12 <<< USING NUCON,0 13 <<< ST R13,REGSAVE+4 CHAIN SAVE AREAS 14 <<< LA R15,REGSAVE 15 <<< ST R15,8(,R13) 16 <<< LR R13,R15 POINT TO NEW SAVE AREA ---------------------------------------------------------------- 1 >>> XRUNPARM TITLE 'RUN PROGRAM WITH PARM FIELD' 2 >>> * 3 >>> ************************************************************** 4 >>> * Source from COBOL disk 5 >>> * original RUNPARM - may be changed 6 >>> ************************************************************** 7 >>> * 8 >>> XRUNPARM START 0 9 >>> SAVE (14,12),,XRUNPARM SAVE REGISTERS 10 >>> LR R12,R15 LOAD BASE REGISTER 11 >>> USING XRUNPARM,R12 12 >>> USING NUCON,0 13 >>> ST R13,REGSAVE+4 CHAIN SAVE AREAS 14 >>> LA R15,REGSAVE 15 >>> ST R15,8(,R13) 16 >>> LR R13,R15 POINT TO NEW SAVE AREA 17 >>> * 18 >>> ************************************************************** 19 >>> * check parameters 20 >>> ************************************************************** 21 >>> * ================================================================ 31 >>> * 32 >>> ************************************************************** 33 >>> * program name etc. 34 >>> ************************************************************** 35 >>> * ================================================================ 55 >>> * 56 >>> ************************************************************** 57 >>> * check parameters 58 >>> ************************************************************** 59 >>> * ================================================================ 83 >>> MVI 0(R2),C' ' OPP: insert blank after token 84 >>> LA R2,1(,R2) OPP: to seperate tokens / 10.2016 ================================================================ 78 <<< ENDTOKEN DS 0H 79 <<< LA R1,PARMFLD COMPUTE PARM FIELD LENGTH 80 <<< SR R2,R1 81 <<< STH R2,PARMLGTH SAVE PARM FIELD LENGTH 82 <<< L R0,LASTLOC COMPUTE AMOUNT OF STORAGE TO RESERVE 83 <<< S R0,=A(ENDRUN) 84 <<< GETMAIN R,LV=(0) OBTAIN STORAGE FOR MODULE 85 <<< STM R0,R1,MODSIZE SAVE MODULE AREA SIZE AND ADDRESS 86 <<< COMPSWT ON TURN ON COMPILER SWITCH 87 <<< LOAD EPLOC=PROGNAME LOAD PROGRAM 88 <<< TM FLAGS,COMPON WAS COMPON SPECIFIED ? 89 <<< BO RUNPROG YES - LEAVE COMPSWT ON 90 <<< COMPSWT OFF NO - TURN IT OFF 91 <<< RUNPROG DS 0H 92 <<< LR R15,R0 93 <<< LA R1,PARMLIST POINT TO PARM LIST 94 <<< BALR R14,R15 95 <<< LR R2,R15 SAVE RETURN CODE 96 <<< TM OSSFLAGS,COMPSWT WAS COMPSWT SET OFF ? 97 <<< BO FREESIZE YES - DON'T BOTHER TWICE 98 <<< COMPSWT OFF NO - TURN IT OFF 99 <<< FREESIZE DS 0H 100 <<< LM R0,R1,MODSIZE OBTAIN MODULE SIZE AND ADDRESS 101 <<< FREEMAIN R,LV=(0),A=(1) RELEASE MODULE AREA 102 <<< LR R15,R2 RESTORE RETURN CODE 103 <<< B EXIT ---------------------------------------------------------------- 95 >>> * 96 >>> ************************************************************** 97 >>> * end of parameter list 98 >>> * get storage for program and load it 99 >>> ************************************************************** 100 >>> * 101 >>> ENDTOKEN DS 0H 102 >>> LA R1,PARMFLD COMPUTE PARM FIELD LENGTH 103 >>> SR R2,R1 104 >>> STH R2,PARMLGTH SAVE PARM FIELD LENGTH 105 >>> L R0,LASTLOC COMPUTE STORAGE TO RESERVE 106 >>> S R0,=A(ENDRUN) 107 >>> GETMAIN R,LV=(0) OBTAIN STORAGE FOR MODULE 108 >>> STM R0,R1,MODSIZE SAVE MODULE AREA SIZE AND ADDRESS 109 >>> COMPSWT ON TURN ON COMPILER SWITCH 110 >>> LOAD EPLOC=PROGNAME LOAD PROGRAM 111 >>> TM FLAGS,COMPON WAS COMPON SPECIFIED ? 112 >>> BO RUNPROG YES - LEAVE COMPSWT ON 113 >>> COMPSWT OFF NO - TURN IT OFF 114 >>> * 115 >>> ************************************************************** 116 >>> * call program 117 >>> ************************************************************** 118 >>> * 119 >>> RUNPROG DS 0H 120 >>> LR R15,R0 121 >>> LA R1,PARMLIST POINT TO PARM LIST 122 >>> BALR R14,R15 123 >>> LR R2,R15 SAVE RETURN CODE 124 >>> TM OSSFLAGS,COMPSWT WAS COMPSWT SET OFF ? 125 >>> BO FREESIZE YES - DON'T BOTHER TWICE 126 >>> COMPSWT OFF NO - TURN IT OFF 127 >>> * 128 >>> ************************************************************** 129 >>> * free storage 130 >>> ************************************************************** 131 >>> * 132 >>> FREESIZE DS 0H 133 >>> LM R0,R1,MODSIZE OBTAIN MODULE SIZE AND ADDRESS 134 >>> FREEMAIN R,LV=(0),A=(1) RELEASE MODULE AREA 135 >>> LR R15,R2 RESTORE RETURN CODE 136 >>> B EXIT 137 >>> * 138 >>> ************************************************************** 139 >>> * error messages 140 >>> ************************************************************** 141 >>> * ================================================================ 129 <<< EXIT DS 0H 130 <<< L R13,4(,R13) POINT TO CALLER'S SAVE AREA 131 <<< RETURN (14,12),RC=(15) RETURN TO CMS 132 <<< EJECT ---------------------------------------------------------------- 167 >>> * 168 >>> ************************************************************** 169 >>> * exit (return to op sys) 170 >>> ************************************************************** 171 >>> * 172 >>> EXIT DS 0H 173 >>> L R13,4(,R13) POINT TO CALLER'S SAVE AREA 174 >>> RETURN (14,12),RC=(15) RETURN TO CMS 175 >>> EJECT 176 >>> * 177 >>> ************************************************************** 178 >>> * definitions 179 >>> ************************************************************** 180 >>> * EXEC CONSSTOP CP SPOOL CONS STOP CLOSE