User Exit Example

The following is an example of a middle user exit for GL40 (Journal Entry). After GL40 completes its normal editing, the program launches this user exit to restrict account numbers 6000-6500 to transaction amounts of $500.00 or less.

The source code file for the procedure in this example would be named GL40MPD, in the /glsrc directory. No specific working storage is needed for this user exit, so an empty file named GL40MWS was created.

GL40BS1-TRANSACTION             SECTION.
       GL40BS1-START.

           PERFORM
               VARYING I1              FROM 1 BY 1
               UNTIL  (I1              > 6)
               OR     (ERROR-FOUND)
                   IF  (GL40F1-LINE-FC     (I1) = "A" OR "C")
                   AND (GL40F1-GLT-ACCOUNT (I1) NOT < 6000)
                   AND (GL40F1-GLT-ACCOUNT (I1) NOT > 6500)
                       IF (GL40F1-GLT-TRAN-AMOUNT (I1) < -500.00)
                       OR (GL40F1-GLT-TRAN-AMOUNT (I1) > 500.00)
                           MOVE 888              TO CRT-ERROR-NBR
                           MOVE GL40F1-GLT-TRAN-AMOUNT-FN (I1)
                                                 TO CRT-FIELD-NBR
                       END-IF
                   END-IF
           END-PERFORM.

****   This edit must occur on forms 1 and 3 of GL40, because 
****   transactions are entered on both forms.
       GL40BS1-TRANSACTION-END.

****   GL40 has nine forms; an empty form control section must
****   be defined for each of forms 2, 4, 5, 6, 7, 8 and 9.

       GL40BS2-TRANSACTION             SECTION.
       GL40BS2-START.
       GL40BS2-TRANSACTION-END.

       GL40BS3-TRANSACTION             SECTION.
       GL40BS3-START.

           PERFORM
               VARYING I1              FROM 1 BY 1
               UNTIL  (I1              > 12)
               OR     (ERROR-FOUND)
                   IF  (GL40F3-LINE-FC     (I1) = "A" OR "C")
                   AND (GL40F3-GLT-ACCOUNT (I1) NOT < 6000)
                   AND (GL40F3-GLT-ACCOUNT (I1) NOT > 6500)
                       IF (GL40F3-GLT-TRAN-AMOUNT (I1) < -5000.00)
                       OR (GL40F3-GLT-TRAN-AMOUNT (I1) > 5000.00)
                           MOVE 888              TO CRT-ERROR-NBR
                           MOVE GL40F3-GLT-TRAN-AMOUNT-FN (I1)
                                                 TO CRT-FIELD-NBR
                       END-IF
                   END-IF
           END-PERFORM.

       GL40BS3-TRANSACTION-END.