* * * DEFAULT ALGORITHM %REDNX STARTS HERE IF TWA-DB-CMD = LOCKY MOVE REDLE TO TWA-DB-CMD ELSE MOVE REDNX TO TWA-DB-CMD. MOVE THIS-PGMS-ELEMENTS TO TWA-ELT-LIST. CALL 'MAGECSET' USING TWA-DB-AREA-A VAC01-ELEMENT PERFORM AA840-CALL-MAGEC-IO THRU AA899-EXIT. MOVE TWA-DB-REQUEST TO TWA-DB-REQ-SAV. MOVE AUDIT-STAMP TO SAVE-AUDIT-STAMP. MOVE VAC01-KEY TO NORMALIZED-KEY. MOVE NORMALIZED-KEY TO TWA-KEY-VALUE. PERFORM JA100-LOGICAL-JOIN THRU JA999-EXIT. * * * DEFAULT ALGORITHM %REDNX ENDS HERE GO TO AAL440-TEST-RETURN-CODE. AAL440-TEST-RETURN-CODE. IF VS-MARKER NOT EQUAL TWA-TIME MOVE VARSTG-MSG TO MSK652-SCOMPL GO TO AAL700-SEND-SCREEN. IF (NOT-FOUND) IF (BROWSE-FORWARD) MOVE EOL-BOT-MSG TO SCOMPL IF ((BROWS-FUNCTION) OR (NXT-FUNCTION)) MOVE SPACES TO TWA-DB-RETURN-CODE MOVE TWA-DB-REQUEST TO TWA-DB-REQ-SAV GO TO AAL500-BUILD-SCREEN ELSE MOVE TWA-DB-REQUEST TO TWA-DB-REQ-SAV GO TO AAL500-BUILD-SCREEN ELSE MOVE EOL-TOP-MSG TO SCOMPL MOVE TWA-DB-REQUEST TO TWA-DB-REQ-SAV GO TO AAL500-BUILD-SCREEN. IF TWA-DB-CMD EQUAL LOCKY MOVE ZEERO TO LIN-CTR GO TO AAL420-READ-FIRST-RECORD. MOVE TWA-DB-REQUEST TO TWA-DB-REQ-SAV. PERFORM CA700-MOVE-TO-WORK-AREA THRU CA799-EXIT. IF (END-OF-LIST-INDICATED) IF (BROWSE-FORWARD) MOVE EOL-BOT-MSG TO SCOMPL IF ((BROWS-FUNCTION) OR (NXT-FUNCTION)) MOVE SPACES TO TWA-DB-RETURN-CODE MOVE TWA-DB-REQUEST TO TWA-DB-REQ-SAV GO TO AAL500-BUILD-SCREEN ELSE MOVE TWA-DB-REQUEST TO TWA-DB-REQ-SAV GO TO AAL500-BUILD-SCREEN ELSE MOVE EOL-TOP-MSG TO SCOMPL GO TO AAL500-BUILD-SCREEN. IF (LIN-CTR LESS THAN NUMBER-OF-RECORDS) OR (TWA-MSK-PF13-HIT) THEN GO TO AAL430-READ-NEXT-RECORD. GO TO AAL500-BUILD-SCREEN. ```** The AAL400 routines are the database I/O routines for the Browses. In here you see the logic to call the MAGECIO I/O (cont.) module to position to the first record on the file having a key value equal to or greater than that entered by the (cont.) Operator and then to read the first record and then to read the "next" record(s). The MAGECIO command REDNX will read (cont.) either forward or backward on the file depending on the setting of the TWA-BROWSE-DIRECTION. Notice the three insertion points which allow you to provide your own Customization logic instead of the Default logic (cont.) shown. If your application is using the MAGECIO I/O module (most of them will be) then your Customization logic would (cont.) likely be very similar to the Default logic, possibly with a few lines of code added. If your application is accessing (cont.) some file or type of file not supported by MAGECIO then you could code your own "reads" here to completely replace the (cont.) calls to MAGECIO. You could even be accessing a "database back-end machine". Notice that the Default logic performs JA100-LOGICAL-JOIN after reading the "primary" record. The JA100 routine is (cont.) where you can insert the "reads" for as many other files as you like. The "Logical Join" philosophy means that all the (cont.) data read can be looked upon by the remaining logic of the program as if it were all one large record. We have (cont.) logically joined many records from many files to construct one larger "logical record" in TWA-DB-DATA. This sample (cont.) program accesses the SIF file in the JA100 routine. The AAL440 routine checks the MAGECIO return code and performs the CA700 routine. The CA700 routine builds a display (cont.) line from the data which was read, for SCN and FND Functions it tests to see if this item meets the selection criteria, (cont.) then it moves the display line to the screen (if appropriate). AAL440 tests the PROCESS-INDICATOR to see how CA700 has (cont.) set it and; as appropriate, loops back to read the next record, or falls through to send the screen. | ``` ** **************************************************************** * AAL500 * * THIS MODULE MOVES THE PRE-FORMATTED WORK AREA TO THE * * SCREEN. * **************************************************************** AAL500-BUILD-SCREEN. IF (TWA-MSK-PF13-HIT) PERFORM CB929-ENDIT THRU CB999-EXIT MOVE SFUNCT TO TWA-LAST-FUNCT MOVE SKEY TO TWA-LAST-KEY MOVE 'RPHCHG' TO SFUNCT MOVE SR-REPORT-NO TO SKEY MOVE QUOTE TO TWA-MSK-AID GO TO AA800-SEND-SCREEN. IF (BROWSE-FORWARD) GO TO AAL700-SEND-SCREEN. MOVE LIN-CTR TO LIN-HI-SUB. MOVE ONE TO LIN-LO-SUB. AAL550-TEST-LIN-SUB. IF LIN-HI-SUB NOT GREATER THAN LIN-LO-SUB GO TO AAL700-SEND-SCREEN. MOVE MSK652-SLINE (LIN-HI-SUB) TO WS-ITEM. MOVE TWA-SV-KEY (LIN-HI-SUB) TO WS-ITEM-KEY. MOVE MSK652-SLINE (LIN-LO-SUB) TO MSK652-SLINE (LIN-HI-SUB). MOVE TWA-SV-KEY (LIN-LO-SUB) TO TWA-SV-KEY (LIN-HI-SUB). MOVE WS-ITEM TO MSK652-SLINE (LIN-LO-SUB). MOVE WS-ITEM-KEY TO TWA-SV-KEY (LIN-LO-SUB). ADD ONE TO LIN-LO-SUB. ADD MINUS-ONE TO LIN-HI-SUB. GO TO AAL550-TEST-LIN-SUB. AAL700-SEND-SCREEN. MOVE FOUR TO TWA-MSK-CUR-AD-OT. IF MSK652-SLINE (1) EQUAL NOT-FOUND-MSG IF (BROWSE-FORWARD) COMPUTE PAGE-CTR = PAGE-CTR - ONE ELSE COMPUTE PAGE-CTR = PAGE-CTR + ONE. AAL750-LEAVE-CUR-SND-SCRN. MOVE MSK652-SFUNCT TO TWA-LAST-FUNCT. MOVE MSK652-SKEY TO TWA-LAST-KEY. GO TO AA800-SEND-SCREEN. ****************************************************** * END OF BROWSE FUNCTIONS MAINLINE LOGIC * ****************************************************** ```** The AAL500 routine saves the Function Code and Key Value in the TWA-LAST-FUNCT and TWA-LAST-KEY fields and exits to MAGEC to send the screen. ## Maintenance Mainline | ``` ** **************************************************************** * AAM200 MAINTENANCE FUNCTIONS MAINLINE * * IF WRONG MASK, GET THIS PROGRAM'S MASK. * * IF NEW TRANSACTION * * OR * * CHANGE OF KEY OR CHANGE OF FUNCTION * * OR * * FUNCTION IS SEE * * TURN ON NEW MASK SWITCH. * * * **************************************************************** AAM200-MAINTENANCE-MAINLINE. IF (TWA-MSK-ATT-REQ) MOVE QUOTE TO TWA-MSK-AID. * * * DEFAULT ALGORITHM %PFKEYM STARTS HERE * * * IF PF4 WAS PRESSED IF (TWA-MSK-PF4-HIT) MOVE LOC-LIT TO T-FUNCT MOVE TEST-FUNCT TO SFUNCT MOVE FTH-FUNCT TO TWA-NONTP-REQUEST MOVE QUOTE TO TWA-MSK-AID MOVE SKEY TO TEST-KEY IF (TK-BYTE (30) EQUAL SPACES) MOVE '1/' TO TEST-KEY MOVE SKEY TO TK-DATA MOVE TEST-KEY TO SKEY GO TO AA900-GOBACK ELSE GO TO AA900-GOBACK. * * * * PF2 = field-level HELP PF16/PF17 = Copy/Paste IF (TWA-MSK-PF1-HIT) OR (TWA-MSK-PF2-HIT) OR (TWA-MSK-PF16-HIT) OR (TWA-MSK-PF17-HIT) THEN MOVE SFUNCT TO TWA-LAST-FUNCT MOVE SKEY TO TWA-LAST-KEY MOVE '**ERR1' TO SFUNCT MOVE FTH-FUNCT TO TWA-NONTP-REQUEST GO TO AA900-GOBACK. IF (TWA-MSK-PF11-HIT) MOVE '**HELP' TO SFUNCT MOVE FTH-FUNCT TO TWA-NONTP-REQUEST GO TO AA900-GOBACK. IF (TWA-MSK-PF3-HIT) IF (TWA-SWAP-ATTACHED) GO TO AA770-DETACH ELSE GO TO AA780-ESCAPE-TO-MENU. IF (TWA-MSK-CUR-AD-IN EQUAL TWA-MSK-CUR-AD-OT) IF (TWA-MSK-PF7-HIT) MOVE NXT-LIT TO T-FUNCT MOVE TEST-FUNCT TO SFUNCT MOVE B TO TWA-BROWSE-DIRECTION ELSE IF (TWA-MSK-PF8-HIT) MOVE NXT-LIT TO T-FUNCT MOVE TEST-FUNCT TO SFUNCT MOVE F TO TWA-BROWSE-DIRECTION. IF (NXT-FUNCTION) MOVE SPACES TO TWA-ERR-CODES. * * * DON'T RESEND DATA IF OPER. TRIED TO ENTER ON SEE-FUNCTION IF (SEE-FUNCTION) AND (TWA-MSK-CUR-AD-IN GREATER EIGHTY) AND (TWA-LAST-FUNCT = TEST-FUNCT) AND (TWA-LAST-KEY = TEST-KEY) AND (TWA-MSK-CUR-AD-IN NOT = TWA-MSK-CUR-AD-OT) THEN Next: https://magec.com/DOC/markdown/genmmp11.md.txt