Loading...
Select Version
&pagelevel(4)&pagelevel
Wir wählen bewusst das Hilfsmittel Columbus-Assembler, weil wir so auf explizites Registersichern und Rückladen verzichten können. Der Benutzer braucht nur das angebotene Gerüst zu übernehmen und kann nach Belieben den Rest der Routinen in Assembler oder Columbus-Assembler schreiben.
Die Namen von Basisroutine und Subroutinen müssen systemweit eindeutig sein und dürfen nicht mit Namen in Systemmodulen kollidieren.
Basisroutine
START EXITCOD AMODE ANY EXITCOD RMODE ANY EXPARLI EX090 DSECT for Exit-090 EXITCOD CSECT ***************************************************************************** * MAINROUTINE * * R1 = EXPARLI A(PARAMETERLIST OF EXIT#90 * ***************************************************************************** EXIT090 @ENTR TYP=E,ENV=SPLSPEC,RETURNS=NO ENTRY EXIT090 USING EXPARLI,R1 Use layout of parlist of Exit-090 ***************************************************************************** * AUFRUF 1.SUBROUTINE * ***************************************************************************** @PASS EXTNAME=SUBROUT1 Call Subrout1 @IF NZ If returncode not ok LTR R15,R15 @THEN ST R15,IEXRC set returncode in exit paralist @EXIT then return to system @BEND ***************************************************************************** * AUFRUF 2.SUBROUTINE * ***************************************************************************** @PASS EXTNAME=SUBROUT2 Call Subrout2 @IF NZ If returncode not ok LTR R15,R15 @THEN ST R15,IEXRC set returncode in exit paralist @EXIT then return to system @BEND
***************************************************************************** * AUFRUF WEITERER ROUTINEN * ***************************************************************************** : : @PASS EXTNAME=SUBROUTN Call Subrout2 @IF NZ If returncode not ok LTR R15,R15 @THEN ST R15,IEXRC set returncode in exit paralist @EXIT then return to system @BEND ***************************************************************************** * END OF MAINROUTINE * ***************************************************************************** @EXIT @END END
Subroutine
SUBEX001 CSECT PRINT GEN SUBEX001 AMODE ANY SUBEX001 RMODE ANY EXITPL EX090 SUBROUTN @ENTR TYP=I,ENV=SPLSPEC,RETURNS=NO ENTRY SUBROUTN **************************************************************************** * Anwendungsspezifische Befehle * **************************************************************************** L R15,IADD RETURNCODE WEITERREICHEN @EXIT , RETURN TO BASISROUTINE @END , END