GO TO AA900-GOBACK. IF (MAINT-FUNCTION) AND (TWA-SERRMSG-MSG (6) EQUAL SPACES) PERFORM FA600-TST-SHORT-LIST-SRC THRU FA699-EXIT IF (SHORT-LIST-AVAIL) MOVE WS-SHORT-LIST-INSTR TO TWA-SERRMSG-MSG (6). IF ((TWA-SWAP-ATTACHED) AND (TWA-SERRMSG-MSG (6) EQUAL SPACES)) MOVE WS-DETACH-MSG TO TWA-SERRMSG-MSG (6). IF SKEYE = E MOVE SPACES TO TWA-LAST-KEY. IF SCOMPLE = E MOVE SPACES TO TWA-LAST-KEY IF (MAINT-FUNCTION) PERFORM BB100-BLANK-SCREEN THRU BB199-EXIT. * * * DEFAULT ALGORITHM %SNDSCRN STARTS HERE * * * NO STANDARD DEFAULT CODE FOR THIS INSERTION POINT * * * DEFAULT ALGORITHM %SNDSCRN ENDS HERE GO TO AA900-GOBACK. AA800-CALL-MONITOR. MOVE REDKY TO TWA-DB-CMD MOVE MSK-CMD TO TWA-DB-FILE-NAME MOVE 'MSKK1' TO TWA-DB-KEY-NAME MOVE TWA-TP-TRM TO TWA-KEY-VALUE MOVE 'MSK01 MSK02 MSK03 MSK04 ' TO TWA-ELT-LIST. AA840-CALL-MAGEC-IO. CALL 'SETIOMMP' USING TWA-MODE TWA-SUB-MMP-NUM. AA850-SUB-CALL. MOVE MMP-LIT TO TWA-SUB-LIT. EXEC CICS LINK PROGRAM(TWA-SUB-MMP) END-EXEC. AA899-EXIT. EXIT. AA900-GOBACK. * * * DEFAULT ALGORITHM %GOBACK STARTS HERE * * * NO STANDARD DEFAULT CODE FOR THIS INSERTION POINT * * * * * * DEFAULT ALGORITHM %GOBACK ENDS HERE MOVE '3' TO TWA-BIG-INDICATOR ELSE MOVE '2' TO TWA-BIG-INDICATOR. EXEC CICS RETURN END-EXEC. ``` The AA800 and AA900 routines are the exit routines which are used to terminate processing for this MMP and return to the MAGEC Control Program to send the message or FTH-FUNCT another Function, etc. The actual coding in this area will vary slightly from one TP Monitor to another, this example is for CICS. The (cont.) differences are of no concern to you, though. When you perform AA840-CALL-MAGEC-IO or go to AA900-GOBACK you will get (cont.) the same results regardless what environment you are operating in. ## B-Level Subroutines ``` **************************************************************** * B-LEVEL SUBROUTINES * * PERFORMED FROM AAL... AND AAM... MAINLINES * **************************************************************** * BA100 INITIALIZE WORK AREAS IN VARIABLE-STOREAGE * **************************************************************** BA100-INIT-STORAGE. MOVE LOW-VALUES TO VARIABLE-STORAGE. MOVE SKEY TO TEST-KEY. MOVE SFUNCT TO TEST-FUNCT. MOVE ZEERO TO LOC-ACCUM-1 LOC-ACCUM-2 LOC-ACCUM-3 LOC-ACCUM-4 LOC-ACCUM-5 LOC-ACCUM-6 LOC-ACCUM-7 LOC-ACCUM-8 LOC-ACCUM-9. MOVE SPACES TO SCREEN-FIELD PATTERN-ERROR PATTERN-MASK DE-EDITED-DATA. CALL'MAGXFRM' USING EIGHTY HDG-LINE ONE HIVALU APOSTROPHE. MOVE ZEERO TO DE-EDITED-VALUE. MOVE Y TO TRANSFORM-SW. MOVE TWA-TIME TO VS-MARKER. IF (BROWS-FUNCTION) GO TO BA105-LOCAT-INIT ELSE GO TO BA150-MAINT-INIT. BA105-LOCAT-INIT. MOVE ALL '.' TO WS-ITEM. MOVE SIXTEEN TO NUMBER-OF-RECORDS. BA106-BLANK-FIL. MOVE SPACES TO WS-FILL-01 WS-FILL-02 WS-FILL-03 WS-FILL-04 WS-FILL-05 WS-FILL-06 WS-FILL-07 WS-FILL-08 WS-FILL-09. BA107-EXIT. EXIT. BA108-CONT. MOVE WS-ITEM TO MSK-DOT-LINE. MOVE SPACES TO WS-ITEM. MOVE 'Emp# ' TO LOC-HDG (1) MOVE 'Earned Vacation ' TO LOC-HDG (5) CALL 'MAGXFRM' USING TWO-TWENTY-FIVE LOC-HDGS ONE HIVALU APOSTROPHE. MOVE Y TO UPPERCASE-SW. IF TWA-MSK-ID EQUAL COMMON-LOC-MSK AND (TEST-FUNCT EQUAL TWA-LAST-FUNCT) AND (TWA-NR-LINES-SENT GREATER THAN ZEERO) AND (TEST-KEY EQUAL TWA-LAST-KEY) THEN COMPUTE WS-LINE-SELECTED EQUAL (TWA-MSK-CUR-AD-IN / +80) - THREE. IF WS-LINE-SELECTED GREATER THAN TWA-NR-LINES-SENT OR WS-LINE-SELECTED LESS THAN ONE OR (TWA-MSK-PF7-HIT) OR (TWA-MSK-PF8-HIT) THEN MOVE ZEERO TO WS-LINE-SELECTED. * THE ABOVE ALLOWS THE LOCINIT AND PFKEYL LOGIC TO SENSE * WHETHER A LINE WAS SELECTED. * * * DEFAULT ALGORITHM %LOCINIT STARTS HERE * * * NO STANDARD DEFAULT CODE FOR THIS INSERTION POINT * * * DEFAULT ALGORITHM %LOCINIT ENDS HERE IF UPPERCASE-SW = Y CALL 'UPCASE' USING SIXTY-SIX MSK652-SSEARCH. CALL 'UPCASE' USING SEVENTY-NINE MSK652-SDOTMSK. MOVE TWA-TIME TO VS-MARKER. GO TO BA199-EXIT. BA150-MAINT-INIT. MOVE F TO TWA-BROWSE-DIRECTION. * * * DEFAULT ALGORITHM %INIT STARTS HERE * * * NO STANDARD DEFAULT CODE FOR THIS INSERTION POINT * * * DEFAULT ALGORITHM %INIT ENDS HERE BA199-EXIT. EXIT. ``` This is the initialization routine which is always performed at the start of processing. Notice the insertion points (cont.) %LOCINIT and %INIT. If you want to add some additional logic to the initialization for the Browse Functions you would (cont.) use %LOCINIT, for the Maintenance Functions use %INIT. In this sample MMP there was no Customization for (cont.) either. ``` *********************************************************************** * BA200 * INITIALIZE SCREEN FIELD ATTRIBUTES * *********************************************************************** BA200-INIT-ATTRIBUTES. IF (MAINT-FUNCTION) GO TO BA210-MAINT-SCREEN. BA205-LOCAT-SCREEN. MOVE SPACES TO MSK652-SCOMPL FATAL-ERR. MOVE ATSADRNF TO MSK652-SLISTA. MOVE ATSADHNF TO MSK652-SCOMPLA MSK652-SHDGA MSK652-SERRMSGA. MOVE ATUADRNM TO MSK652-SKEYA MSK652-SFUNCTA. MOVE SPACES TO MSK652-SKEYE MSK652-SCOMPLE MSK652-SERRMSGE. IF (SCN-FUNCTION) OR (FND-FUNCTION) OR (TWA-MSK-PF13-HIT) MOVE ATUADHNM TO MSK652-SDOTMSKA ELSE MOVE ATSANRNF TO MSK652-SDOTMSKA. IF (FND-FUNCTION) MOVE ATSADRNF TO MSK652-SSARGLTA MOVE ATUADHNF TO MSK652-SSEARCHA ELSE MOVE ATSANRNF TO MSK652-SSARGLTA MSK652-SSEARCHA. MOVE ATSADHNF TO MSK652-SHDGA. MOVE HDG-LINE TO MSK652-SHDG. MOVE SPACES TO MSK652-SLIST. MOVE NOT-FOUND-MSG TO MSK652-SLINE (1). GO TO BA299-EXIT. BA210-MAINT-SCREEN. IF (SEE-FUNCTION) MOVE FOUR TO TWA-MSK-CUR-AD-OT ELSE MOVE STD-CUR-AD-OT TO TWA-MSK-CUR-AD-OT. IF TWA-DB-RETURN-CODE EQUAL GA-LIT MOVE SPACES TO TWA-DB-RETURN-CODE ELSE MOVE SPACES TO SCOMPL. MOVE SPACES TO SERRMSG SFUNCTE SKEYE SCOMPLE SERRMSGE. MOVE ATPADHNF TO SCOMPLA SERRMSGA. MOVE ATUADRNM TO SKEYA SFUNCTA. MOVE ATSADRNF TO SYSDATEA. MOVE ATSADRNF TO SYSTIMEA. MOVE ATSADRNF TO SEMPNUMA. MOVE ATSADRNF TO SFIRSTA. MOVE ATSADRNF Next: https://magec.com/DOC/markdown/genmmp17.md.txt