TO SCREEN-FIELD.
PERFORM CB600-STRIP-PATTERN THRU CB699-EXIT
MOVE DE-EDITED-VALUE
TO SEMPNUM-N
VAC01-EMPNUM.
MOVE SFIRST
TO SIF01-FIRST-NAME.
MOVE SLAST-N
TO SIF01-LAST-NAME.
MOVE SDATE-H-MM
TO VAC01-DATE-HIRED-MM.
MOVE SDATE-H-DD
TO VAC01-DATE-HIRED-DD.
MOVE SDATE-H-YY
TO VAC01-DATE-HIRED-YY.
COMPUTE VAC01-EARNED-VACATION
ROUNDED
EQUAL SEARNED-N.
COMPUTE VAC01-TAKEN-VACATION
ROUNDED
EQUAL STAKEN-N.
COMPUTE VAC01-EARNED-SICK-DAYS
ROUNDED
EQUAL SEARN07-N.
COMPUTE VAC01-TAKEN-SICK-DAYS
ROUNDED
EQUAL STAKE08-N.
COMPUTE VAC01-EARNED-COMP-DAYS
ROUNDED
EQUAL SEARN09-N.
COMPUTE VAC01-TAKEN-COMP-DAYS
ROUNDED
EQUAL STAK10-N.
MOVE SCOMMEN (001)
TO VAC01-COMMENT (001).
MOVE SCOMMEN (002)
TO VAC01-COMMENT (002).
MOVE SCOMMEN (003)
TO VAC01-COMMENT (003).
* * * DEFAULT ALGORITHM %CALC STARTS HERE
* * * NO STANDARD DEFAULT CODE FOR THIS INSERTION POINT
* * * DEFAULT ALGORITHM %CALC ENDS HERE
MOVE NORMALIZED-KEY
TO VAC01-KEY.
BB680-BUSINESS-RULES.
* * * DATA RULE VAC01 RULPROC STARTS HERE
MOVE 'SIF01' TO TWA-ELT-LIST.
MOVE REDKY TO TWA-DB-REQUEST.
MOVE 'SIFK1' TO TWA-DB-KEY-NAME.
MOVE ZERO TO SIF01-KEY-PREFIX.
MOVE VAC01-EMPNUM TO SIF01-EMPNUM.
MOVE SIF01-MASTER-KEY TO TWA-KEY-VALUE.
CALL 'MAGECSET' USING TWA-DB-AREA-A SIF01-ELEMENT.
PERFORM AA840-CALL-MAGEC-IO THRU AA899-EXIT.
IF TWA-DB-RETURN-CODE EQUAL SPACES
NEXT SENTENCE
ELSE
MOVE '9XX' TO ERROR-NUMBER
MOVE ATUADHNM TO SKEYA
PERFORM CA100-LOAD-ERR-CODE-TBL THRU CA199-EXIT.
* * * DATA RULE VAC01 RULPROC ENDS HERE
BB699-EXIT.
EXIT.
```**
The BB600 routine is performed for ADD and CHG Functions in the Continuation Mode and if no errors were found in either (cont.)
the Custom or the Automatic Editing. It moves the fields from the screen to the record. Notice that it uses the numeric (cont.)
fields with the -N suffix where appropriate and rearranges the dates if they are not in the same format on the file as (cont.)
on the screen. These moves were gnereated from the Developer's specifications in MSKDEF for database "Source/Target" (cont.)
fields for the screen fields.
The %ADDINIT insertion point allows you to override the Default logic for initializing the record for an ADD.
The %CALC insertion point allows you to override the Default which moves NORMALIZED-KEY to the record key field and to add your own calculations or MOVEs to build the record fields.
Notice that the BB680 routine is where the Business Rules are inserted. The one in this example is the Rule associated (cont.)
with the VAC01 Element. It is executed after all MOVE's to the database fields have been completed. It references (cont.)
fields in the database Element copybook, rather than fields in the screen since this code might be inserted into many (cont.)
applications. If it sets the ERROR-FOUND condition (by performing the CA100 routine), the update or add operation will (cont.)
not carry through the database update, it will issue an error message instead.
| ```
**
****************************************************************
* BB800 *
* SEND MASK RETRIEVAL ERROR MESSAGE TO OPERATOR AT *
* TERMINAL AND TO COMMAND TERMINAL. *
****************************************************************
BB800-MSK-ERR-MSG.
MOVE FTH-FUNCT TO TWA-NONTP-REQUEST.
MOVE CLEAR-FUNCT TO MSK652-SFUNCT.
MOVE MSG-LIT TO TWA-TP-OP.
MOVE MSK-ERR-MSG TO TWA-MSK-DETAIL.
BB899-EXIT.
EXIT.
```**
The BB800 routine is performed when the MMP gets a bad return code trying to read the MSK initialization record. It issues an error message via FTH-FUNCT to the Clear-Screen Function.
| ```
**
****************************************************************
* CA100 *
* THIS ROUTINE ADDS ERROR CODES TO THE ERROR CODE TABLE, *
* ELIMINATING DUPLICATE ENTRIES AND ALLOWING ONLY A MAXIMUM*
* OF SIX ENTRIES. *
****************************************************************
CA100-LOAD-ERR-CODE-TBL.
MOVE F TO FATAL-ERR.
PERFORM CA200-SERIAL-SEARCH
VARYING ERR-SUB FROM ONE BY ONE
UNTIL (TWA-ERR (ERR-SUB) = SPACE OR ERROR-NUMBER)
OR ERR-SUB GREATER SIX.
IF ERR-SUB GREATER SIX
GO TO CA199-EXIT.
MOVE ERROR-NUMBER TO TWA-ERR (ERR-SUB).
CA199-EXIT.
EXIT.
```**
The CA100 routine is performed by your Customization Editing logic to set the ERROR-NUMBER into TWA-ERR-CODES and to set the FATAL-ERR flag to F (ERROR-FOUND) indicating a "fatal error".
To use this routine you would code:
MOVE '...' TO ERROR-NUMBER
PERFORM CA100-LOAD-ERR-CODE-TBL THRU CA199-EXIT
| ```
**
****************************************************************
* CA200 *
* THIS IS A DUMMY ROUTINE PERFORMED IN TABLE *
* SEARCHING TO INCREMENT A SUBSCRIPT. *
****************************************************************
CA200-SERIAL-SEARCH.
EXIT.
```**
The CA200 routine is a dummy EXIT which is used by many other routines to vary subscripts, as:
PERFORM CA200-SERIAL-SEARCH
VARYING SUB FROM ONE BY ONE
UNTIL (SUB GREATER THAN TEN)
OR (WIDGET (SUB) = 'X').
| ```
**
*****************************************************************
* THE FOLLOWING PARAGRAPHS CA300- THRU CA319- WILL TALLY THE *
* COUNT OF ALL OCCURRENCES OF ANY NON-BLANK CHARACTER IN A FIELD.*
* THE FIELD MUST BE IN A WORK-AREA CALLED 'INSP-LINE'. *
* THE CHARACTER TO BE TALLIED MUST BE IN A WORK FIELD CALLED *
* 'INSP-TEST'. *
* THE COUNT WILL BE RETURNED IN A WORK FIELD CALLED *
* 'NR-CHARACTERS'. *
*****************************************************************
SKIP1
CA300-INSPECT-TALLYING-ALL-CHR.
MOVE ZERO TO NR-CHARACTERS.
PERFORM CA200-SERIAL-SEARCH
VARYING INSP-SUB FROM +80 BY -1
UNTIL INSP-CHAR (INSP-SUB) NOT EQUAL SPACE.
PERFORM CA310-TALLY-CHARS THRU CA319-EXIT
VARYING INSP-SUB FROM INSP-SUB BY -1
UNTIL INSP-SUB LESS THAN +1.
CA309-EXIT.
EXIT.
CA310-TALLY-CHARS.
IF INSP-CHAR (INSP-SUB) EQUAL INSP-TEST
ADD +1 TO NR-CHARACTERS.
CA319-EXIT.
EXIT.
```**
The CA300 routine is performed from the Normalize Key logic and may be used by you in your routines, as well. It does (cont.)
the job of an EXAMINE or INSPECT verb. Since MAGEC programs are transportable to many environments, and since those (cont.)
verbs are not always supported on various versions of the Cobol compiler, we have provided this (cont.)
routine.
**
| ```
****************************************************************
* CA400 *
* THIS ROUTINE ADDS WARNING MESSAGE NUMBERS TO THE ERROR *
* CODE TABLE *
****************************************************************
CA400-LOAD-WARNING-TO-TBL.
IF FATAL-ERR LESS THAN E
MOVE W TO FATAL-ERR.
PERFORM CA200-SERIAL-SEARCH
VARYING ERR-SUB FROM ONE BY ONE
UNTIL (TWA-ERR (ERR-SUB) = SPACE OR ERROR-NUMBER)
OR ERR-SUB GREATER SIX.
IF ERR-SUB GREATER SIX
GO TO CA499-EXIT.
MOVE ERROR-NUMBER TO TWA-ERR (ERR-SUB).
CA499-EXIT.
EXIT.
```**
The CA400 routine is used just like the CA100 routine above but it sets the FATAL-ERR flag to W instead of F. W (cont.)
indicates a "warning level error" which will not prevent file updating but will issue an error message to the screen in (cont.)
SERRMSG.
| ```
**
****************************************************************
* CA500 *
* THIS MOVES THE KEY VALUE TO SKEY WHEN TRANSFERRING FROM *
* A BROWSE TO A SEE OR CHG FUNCTION VIA CURSOR-SELECTION. *
* IT ALSO FORMATS THE KEY FOR THE NEXT FUNCTION *
****************************************************************
CA500-MOVE-SKEY.
MOVE SPACES TO NORMALIZED-KEY.
MOVE ONE TO NK-SUB.
PERFORM CA560-MOVE THRU CA569-EXIT
VARYING TK-SUB FROM ONE BY ONE
UNTIL TK-SUB GREATER THAN THIRTY-ONE.
next: genmmp22.md.txt