DSN8MC3
THIS MODULE VALIDATES SPECIFIC INPUT AND MOVES IT TO THE OUTPUT MESSAGE TOGETHER WITH A TEXT FIELD.
**********DSN8MC3 - VALIDATION MODULE FOR ACTION - COBOL ******** 00010000
* * 00020000
* MODULE NAME = DSN8MC3 * 00030000
* * 00040000
* DESCRIPTIVE NAME = DB2 SAMPLE APPLICATION * 00050000
* VALIDATION MODULE FOR ACTION * 00060000
* COBOL * 00070000
* LICENSED MATERIALS - PROPERTY OF IBM * 00072000
* 5615-DB2 * 00074000
* (C) COPYRIGHT 1995, 2013 IBM CORP. ALL RIGHTS RESERVED. * 00077000
* * 00080000
* STATUS = VERSION 11 * 00090001
* * 00100000
* * 00120000
* FUNCTION = THIS MODULE VALIDATES SPECIFIC INPUT * 00140000
* AND MOVES IT TO THE OUTPUT MESSAGE * 00150000
* TOGETHER WITH A TEXT FIELD. * 00160000
* * 00170000
* NOTES = NONE * 00180000
* * 00190000
* * 00200000
* MODULE TYPE = BLOCK OF COBOL CODE * 00210000
* PROCESSOR = DB2 PRECOMPILER, COBOL COMPILER * 00220000
* MODULE SIZE = SEE LINKEDIT * 00230000
* ATTRIBUTES = REUSABLE * 00240000
* * 00250000
* ENTRY POINT = DSN8MC3 * 00260000
* PURPOSE = SEE FUNCTION * 00270000
* LINKAGE = INCLUDED BY MODULE DSN8CC1 * 00280000
* * 00290000
* INPUT = PARAMETERS EXPLICITLY PASSED TO THIS FUNCTION: * 00300000
* SYMBOLIC LABEL/NAME = NONE * 00310000
* DESCRIPTION = NONE * 00320000
* * 00330000
* OUTPUT = PARAMETERS EXPLICITLY RETURNED: * 00340000
* SYMBOLIC LABEL/NAME = NONE * 00350000
* DESCRIPTION = NONE * 00360000
* * 00370000
* EXIT-NORMAL = THIS CODE IS "PERFORMED", SO IT EXITS TO CODE * 00380000
* FOLLOWING THE "PERFORM" STATEMENT * 00390000
* * 00400000
* EXIT-ERROR = IF SQLERROR OR SQLWARNING, SQL WHENEVER CON- * 00410000
* DITION SPECIFIED IN DSN8CC1/IC1 WILL BE RAISED* 00420000
* AND PROGRAM WILL GO TO THE LABEL DB-ERROR. * 00430000
* * 00440000
* * 00450000
* RETURN CODE = NONE * 00460000
* * 00470000
* ABEND CODES = NONE * 00480000
* * 00490000
* ERROR MESSAGES = * 00500000
* DSN8070E - VITAL DATA IS MISSING IN TABLE 'TOPTVAL' * 00510000
* * 00520000
* EXTERNAL REFERENCES = MOST VARIABLES ARE GLOBAL AND DEFINED * 00530000
* IN DSN8CC1/IC1. * 00540000
* ROUTINES/SERVICES = * 00550000
* DSN8MCG - ERROR MESSAGE ROUTINE * 00560000
* * 00570000
* DATA-AREAS = NONE * 00580000
* * 00590000
* CONTROL-BLOCKS = * 00600000
* SQLCA - SQL COMMUNICATION AREA * 00610000
* * 00620000
* TABLES = NONE * 00630000
* * 00640000
* CHANGE-ACTIVITY = NONE * 00650000
* * 00660000
* * 00670000
* *PSEUDOCODE* * 00680000
* * 00690000
* PROCEDURE * 00700000
* INITIALIZE RETURNCODE TO '0'. * 00710000
* * 00720000
* FILL IN THE DISPLAY AREA * 00730000
* FROM VOPTVAL (ACTION,SELTXT) * 00740000
* DEPENDING ON REQUIRED MAJSYS AND ACTION * 00750000
* RETURN. * 00760000
* * 00770000
* IF ACTION NOT FOUND * 00780000
* RETRIEVE A LIST OF ACTION WHICH EXISTS, * 00790000
* HEADTXT, INFOTXT AND PFKTXT FILL IN DISPLAY AREA * 00800000
* FROM VOPTVAL * 00810000
* DEPENDING ON MAJSYS = MAJSYS AND ACTION = BLANK * 00820000
* SET RETURNCODE TO '1'. * 00830000
* * 00840000
* END. * 00850000
* * 00860000
*---------------------------------------------------------------* 00870000
00880000
DSN8MC3. 00890000
00900000
************************************************************** 00910000
* ** INITIALIZE RETURN CODE 00920000
************************************************************** 00930000
MOVE '0' TO RETCODE. 00940000
MOVE 'DSN8MC3' TO MAJOR IN DSN8-MODULE-NAME. 00950000
00960000
************************************************************** 00970000
* ** LET'S SEE IF THE ACTION SPECIFIED ON INPUT EXISTS 00980000
* **BY TRYING TO RETRIEVE ACTION AND TEXT. 00990000
************************************************************** 01000000
01010000
* **RETRIEVAL 01020000
EXEC SQL SELECT SELTXT 01030000
INTO :POPTVAL.SELTXT 01040000
FROM VOPTVAL 01050000
WHERE MAJSYS = :INAREA.MAJSYS 01060000
AND ACTION = :INAREA.ACTION 01070000
AND ACTION <> ' ' 01080000
AND OBJFLD = ' ' 01090000
END-EXEC. 01100000
01110000
* **ACTION EXISTS 01120000
* **FILL IN DISPLAY AREA 01130000
MOVE ACTION IN INAREA TO ACTION IN OUTAREA. 01140000
MOVE SELTXT IN POPTVAL TO DESC2 IN OUTAREA. 01150000
01160000
* **RETURN 01170000
IF SQLCODE = +0 THEN 01180000
GO TO END-DSN8MC3. 01190000
************************************************************** 01200000
* ** ACTION NOT FOUND 01210000
* ** PROVIDE A LIST OF ACTIONS WHICH EXIST 01220000
************************************************************** 01230000
MOVE SPACE TO ACTION IN OUTAREA. 01240000
MOVE SPACE TO DESC2 IN OUTAREA. 01250000
01260000
* ** OPEN CURSOR 01270000
EXEC SQL OPEN VO2 END-EXEC. 01280000
* 01290000
MOVE +1 TO I. 01300000
* **RETRIEVE LIST OF ACTIONS 01310000
MC3-10. 01320000
IF I NOT > 15 01330000
THEN EXEC SQL FETCH VO2 INTO :POPTVAL.ACTION , 01340000
:POPTVAL.SELTXT END-EXEC 01350000
01360000
IF SQLCODE NOT = +100 THEN 01370000
MOVE SPACES TO FIELD-1(I) 01380000
MOVE ACTION IN POPTVAL TO FIELD-2(I) 01390000
MOVE SELTXT IN POPTVAL TO FIELD-3(I) 01400000
ADD 1 TO I 01410000
GO TO MC3-10. 01420000
MC3-20. 01430000
* **CLOSE CURSOR 01440000
EXEC SQL CLOSE VO2 END-EXEC. 01450000
* 01460000
MOVE I TO J. 01470000
01480000
* **PUT BLANKS AT 01490000
* **END OF LINE 01500000
MC3-30. 01510000
IF J NOT > 15 THEN MOVE SPACE TO LINE0(J) 01520000
ADD 1 TO J 01530000
GO TO MC3-30. 01540000
* 01550000
************************************************************** 01560000
* ** CHECK FOR CONDITION WHERE THERE ARE NO VALID ENTRIES */01570000
************************************************************** 01580000
01590000
* **NO VALID ENTRY IN 01600000
* **OPTION VALIDATION 01610000
* **BASE TABLE (TOPTVAL) 01620000
* **TRY TO GET ERROR TEXT 01630000
IF I = 1 THEN MOVE '1' TO RETCODE 01640000
01650000
MOVE '070E' TO MSGCODE 01660000
CALL 'DSN8MCG' USING MAJOR MSGCODE OUTMSG 01670000
MOVE OUTMSG TO MSGTEXT IN MSG 01680000
01690000
* **RETURN 01700000
GO TO END-DSN8MC3. 01710000
* 01720000
************************************************************** 01730000
* ** IF ONLY THE ACTION EXISTS THEN USE AS DEFAULT 01740000
* ** SET UP ACTION AND DESCRIPTION IN OUTPUT 01750000
************************************************************** 01760000
01770000
IF I = 2 AND ACTION IN INAREA = ' ' THEN 01780000
MOVE '0' TO RETCODE 01790000
MOVE FIELD-2(1) TO ACTION IN INAREA 01800000
MOVE FIELD-2(1) TO ACTION IN OUTAREA 01810000
MOVE FIELD-3(1) TO DESC2 IN OUTAREA 01820000
MOVE SPACE TO LINE0 (1) 01830000
* **RETURN 01840000
GO TO END-DSN8MC3. 01850000
01860000
************************************************************** 01870000
* ** ACTION WAS NOT FOUND 01880000
************************************************************** 01890000
01900000
MOVE '1' TO RETCODE. 01910000
01920000
EXEC SQL SELECT * 01930000
INTO :POPTVAL 01940000
FROM VOPTVAL 01950000
WHERE MAJSYS = :INAREA.MAJSYS 01960000
AND ACTION = ' ' 01970000
END-EXEC. 01980000
01990000
* **FILL DISPLAY AREA 02000000
* **WITH HEADING, PFKEY, 02010000
* **& MESSAGE INFO. 02020000
02030000
MOVE HEADTXT IN POPTVAL TO HTITLE IN OUTAREA. 02040000
MOVE INFOTXT IN POPTVAL TO MSG IN OUTAREA. 02050000
MOVE PFKTXT IN POPTVAL TO PFKTEXT IN OUTAREA. 02060000
* 02070000
02080000
* **RETURN TO 02090000
* **DSN8MC1 MODULE 02100000
END-DSN8MC3. 02110000