% IGGSTART: MACRO KEYS(CLEAN,USER,ENV,SDUMP); /*YM7586*/ 00500002 ANS('DO; /*?' || MACNAME || ' ' || MACKEYS || '*/'); 00550002 ANS('* /* MACCOMP Y-2 SC1D0/SJ0082 */') COL(1); 00600002 ANS('* /* MACSTAT Y-2 78152/@ZA32859 */') COL(1); 00650037 DCL (REMCOL, QUITCOL) FIXED; 01000002 REMCOL = MACRMAR-31; /* NORMALLY COL 41 */ 01500002 QUITCOL = MACRMAR-2; /* NORMALLY COLUMN 70 */ 02000002 DCL (ON, STRING) CHAR; 02500002 ON = '''1''B'; 03000002 IF CLEAN = '' THEN 03500002 ANS('***ERROR***''CLEAN'' IS A REQUIRED KEYWORD;') COL(1); 04000002 IF USER = '' THEN 04500002 ANS('***ERROR***''USER'' IS A REQUIRED KEYWORD;') COL(1); 05000002 IF SDUMP = '' THEN 05500002 ANS('***ERROR***''SDUMP'' IS A REQUIRED KEYWORD;') COL(1); 06000002 IF LENGTH(MACLABEL) > 0 THEN /* IF MACRO LABEL PRESENT, */ 06500002 ANS(MACLABEL) /* THEN PRINT IT AS DO LABEL */ 07000002 COL(MACLMAR); /* AT THE LEFT MARGIN */ 07500002 ANS('/' || REPEAT('*',MACRMAR-MACLMAR-2) || '/') COL(MACLMAR); 08500002 ANS(COMMENT( 09000002 ' THIS ROUTINE ANALYSES FLAGS IN THE SDWA TO DETERMINE ' 09500002 )) COL(MACLMAR); ANS(COMMENT( 10000002 ' WHAT TYPE OF FUNCTION TO PERFORM ' 10500002 )) COL(MACLMAR); ANS(COMMENT( 11000002 ' THE FLAG COMBINATIONS TESTED AND THE ACTIONS TAKEN ARE SUMMARIZED ' 11500002 )) COL(MACLMAR); ANS(COMMENT( 12000002 ' IN THE FOLLOWING TABLE: ' 12500002 )) COL(MACLMAR); ANS(COMMENT( 13000002 ' ' 13500002 )) COL(MACLMAR); ANS(COMMENT( 14000002 ' PREVIOUS || CAUSE OF ERROR ENTRY ' 14500002 )) COL(MACLMAR); ANS(COMMENT( /*YM7586*/ 15000002 ' PROCESSING || MCHK/PGIO/TEXC OTHER ' 15500002 )) COL(MACLMAR); ANS(COMMENT( 16000002 ' ___________||________________________ ' 16500002 )) COL(MACLMAR); ANS(COMMENT( /*YM7586*/ 17000002 ' *EAS || C C ' 17500002 )) COL(MACLMAR); ANS(COMMENT( /*YM7586*/ 18000002 ' *CLUP || C C ' 18500002 )) COL(MACLMAR); ANS(COMMENT( /*YM7586*/ 19000002 ' *STAF || S S ' 19500002 )) COL(MACLMAR); IF ENV='' THEN DO; ANS(COMMENT( /*YM7586*/ 20000002 ' *PERC || C U ' 20500002 )) COL(MACLMAR); ANS(COMMENT( /*YM7586*/ 21000002 ' *NRBE || C U ' 21500002 )) COL(MACLMAR); END; ELSE DO; ANS(COMMENT( /*YM7586*/ 22000002 ' *PERC || C E ' 22500002 )) COL(MACLMAR); ANS(COMMENT( /*YM7586*/ 23000002 ' *NRBE || C E ' 23500002 )) COL(MACLMAR); END; ANS(COMMENT( /*YM7586*/ 24000002 ' NONE || C U ' 24500002 )) COL(MACLMAR); ANS(COMMENT( 26000002 ' ' 26500002 )) COL(MACLMAR); ANS(COMMENT( 27000002 ' * THESE BITS ARE NOT ALL MUTUALLY EXCLUSIVE. THEY ARE ' 27500002 )) COL(MACLMAR); ANS(COMMENT( 28000002 ' TESTED IN THE ORDER LISTED. ' 28500002 )) COL(MACLMAR); ANS(COMMENT( 29100002 ' ' 29500002 )) COL(MACLMAR); ANS(COMMENT( 29550002 ' * USER ABENDS ALWAYS GO TO THE CLEANRTN. ' 29600002 )) COL(MACLMAR); ANS(COMMENT( 29650002 ' ' 29700002 )) COL(MACLMAR); ANS(COMMENT( 29750002 ' FUNCTIONS TO BE PERFORMED: ' 30500002 )) COL(MACLMAR); ANS(COMMENT( 31000002 ' ' 31500002 )) COL(MACLMAR); 32000002 STRING = ' C ' || CLEAN || 41000002 '--CLEAN UP RESOURCES AND PERCOLATE ERROR'; 41500002 STRING = STRING || REPEAT(' ',66-LENGTH(STRING)); 42000002 ANS(COMMENT(STRING)) COL(MACLMAR); 42500002 ANS(COMMENT( 43000002 ' ' 43500002 )) COL(MACLMAR); 44000002 IF ENV ^= '' THEN DO; 44500002 STRING = ' E ' || ENV || 45000002 '--TEST FOR KNOWN ENVIRONMENTAL ERROR CONDITIONS,'; 45500002 STRING = STRING || REPEAT(' ',66-LENGTH(STRING)); 46000002 ANS(COMMENT(STRING)) COL(MACLMAR); 46500002 ANS(COMMENT( 47000002 ' AND IF FOUND, SET ERROR RETURN TO USER. ' 47500002 )) COL(MACLMAR); ANS(COMMENT( 48000002 ' IF UNKNOWN, TREAT AS U ' 48500002 )) COL(MACLMAR); ANS(COMMENT( 49000002 ' ' 49500002 )) COL(MACLMAR); 50000002 END; 50500002 STRING = ' S ' || SDUMP || 51000002 '--PREVIOUS RECOVERY ROUTINE FAILED.'; 51500002 STRING = STRING || REPEAT(' ',66-LENGTH(STRING)); 52000002 ANS(COMMENT(STRING)) COL(MACLMAR); 52500002 ANS(COMMENT( 53000002 ' TAKE A DUMP FOR IT, THEN TREAT AS C ' 53500002 )) COL(MACLMAR); ANS(COMMENT( 54000002 ' ' 54500002 )) COL(MACLMAR); 55000002 STRING = ' U ' || USER || 55500002 '--VALIDATE USER INPUT. IF IT IS IN ERROR,'; 56000002 STRING = STRING || REPEAT(' ',66-LENGTH(STRING)); 56500002 ANS(COMMENT(STRING)) COL(MACLMAR); 57000002 ANS(COMMENT( 57500002 ' TAKE PROBLEM DETERMINATION ACTIONS AND THEN CLEAN UP. ' 58000002 )) COL(MACLMAR); ANS(COMMENT( 58500002 ' IF IT IS VALID, ASSUME A SYSTEM ERROR IN COVERED FUNCTION. ' 59000002 )) COL(MACLMAR); ANS(COMMENT( 59500002 ' TAKE A DUMP, THEN TREAT AS C ' 60000002 )) COL(MACLMAR); 60500002 ANS('/' || REPEAT('*',MACRMAR-MACLMAR-2) || '/') COL(MACLMAR); 61000002 ANS('IF SDWAEAS = ON') COL(MACCOL) SKIP(2); 64500002 ANS('/* LOWER ESTAE ALREADY DUMPED */') COL(REMCOL); 65000002 ANS(' | SDWACLUP = ON THEN') COL(MACCOL); 65500002 ANS('/* OR RTM SAYS CLEANUP */') COL(REMCOL); 66000002 ANS('GOTO ' || CLEAN(1) || ';') COL(MACCOL+3); 66500002 ANS('/* GO CLEAN UP & GET OUT */') COL(REMCOL); 67000002 ANS('IF TCBCREQ = ON THEN') COL(MACCOL); 67000437 ANS('/* TCB ABEND BIT IS ON @ZA32859*/') COL (REMCOL); 67000837 ANS('GOTO ' || SDUMP(1) || ';') COL(MACCOL+3); 67001237 ANS('/*GO TO DUMP RTN @ZA26062*/') COL (REMCOL); 67001637 ANS('RFY GPR15F RSTD;') COL(MACCOL); 67002002 ANS('/* RESTRICT WORKREG 15 ZA02517*/') COL(REMCOL); 67004002 ANS('GPR15F = ''FFF''X;') COL(MACCOL); 67006002 ANS('/* SET USER ABEND MASK ZA02517*/') COL(REMCOL); 67008002 ANS('GEN REFS(SDWACMPC,SDWAPTR)(N GPR15F,SDWACMPC-1(SDWAPTR));'67008402 ) COL(MACCOL); 67008502 ANS('IF GPR15F ^= 0 THEN') COL(MACCOL); 67058802 ANS('/* IF USER ABEND CODE ZA02517*/') COL(REMCOL); 67060002 ANS('GOTO ' || CLEAN(1) || ';') COL(MACCOL+3); 67110002 ANS('/* GO CLEAN UP & EXIT ZA02517*/') COL(REMCOL); 67160002 ANS('RFY GPR15F UNRSTD;') COL(MACCOL); 67210002 ANS('/* RELEASE WORKREG 15 ZA02517*/') COL(REMCOL); 67260002 ANS('IF SDWASTAF = ON THEN') COL(MACCOL) SKIP(2); 67500002 ANS('/* A LOWER LEVEL ESTAE/FRR */') COL(REMCOL); 68000002 ANS('GOTO ' || SDUMP(1) || ';') COL(MACCOL+3); 69000002 ANS('/* WAS EXECUTING AND FAILED */') COL(REMCOL); 69050002 ANS('/* TAKE A DUMP FOR IT */') COL(REMCOL); 69500002 ANS('IF SDWATEXC = ON') COL(MACCOL); /*YM7586*/ 72500002 ANS('/* SOME NON-PROGRAM TYPE */') COL(REMCOL); 73000002 ANS(' | SDWAPGIO = ON') COL(MACCOL); /*YM7586*/ 73500002 ANS('/* ERROR HAS OCCURRED */') COL(REMCOL); 74000002 ANS(' | SDWAMCHK = ON THEN') COL(MACCOL); /*YM7586*/ 74010002 ANS('/* GO CLEAN UP & GET OUT */') COL(REMCOL); 74100002 ANS('GOTO ' || CLEAN(1) || ';') COL(MACCOL+3); /*YM7586*/ 74150002 IF ENV ^= '' THEN DO; 75000002 ANS('IF SDWAPERC = ON') COL(MACCOL) SKIP(2); /*YM7586*/ 75050002 ANS('/* ESTAE OR RB BELOW US */') COL(REMCOL); 75100002 ANS(' | SDWANRBE = ON THEN') COL(MACCOL+3); /*YM7586*/ 75150002 ANS('/* TRYING TO SAY SOMETHING */') COL(REMCOL); 75200002 ANS('GOTO ' || ENV(1) || ';') COL(MACCOL+6); 75500002 ANS('/* CHECK FOR ENVIRON PROBLEMS */') COL(REMCOL); 76000002 END; 76500002 ANS('GOTO ' || USER(1) || ';') COL(MACCOL) SKIP(2); /*YM7586*/ 77500002 ANS('/* CHECK USER INPUT */') COL(REMCOL); 78000002 ANS('/' || REPEAT('*',MACRMAR-MACLMAR-2) || '/') COL(MACLMAR); 86500002 ANS('END;') COL(MACCOL); 87000002 % END; 87500002