This utility produces a report about the objects in a library. It checks all commands, programs and files. It looks at the date/time of the source used to create the object, and then checks if the source member has been changed since then. A report is printed, showing the results.
This helps to identify which objects do not have source, or have source with a different date/time. Both situations are a problem. The utility consists of command Compare Objects and Source (CMPOBJSRC, 4a), two CL programs (OBJ006CL and OBJ006CLA, in4b and 4c), and an RPG program (OBJ006RG, 4d).
This helps to identify which objects do not have source, or have source with a different date/time. Both situations are a problem. The utility consists of command Compare Objects and Source (CMPOBJSRC, Figure 4a), two CL programs (OBJ006CL and OBJ006CLA, in Figures 4b and 4c), and an RPG program (OBJ006RG, Figure 4d).
TechTalk: Comparing Objects Against Source
Figure 4A Command CMPOBJSRC
CMPOBJSRC: CMD PROMPT('Compare Object and Source') PARM KWD(OBJ) TYPE(NAME1) MIN(1) PROMPT('Objects') PARM KWD(ERRONLY) TYPE(*CHAR) LEN(4) RSTD(*YES) + DFT(*YES) VALUES(*YES *NO) PROMPT('Print + errors only') NAME1: QUAL TYPE(*GENERIC) LEN(10) SPCVAL((*ALL)) MIN(1) QUAL TYPE(*NAME) LEN(10) SPCVAL((*LIBL) + (*USRLIBL) (*CURLIB) (*ALL) (*ALLUSR)) + MIN(1) PROMPT('Library')
TechTalk: Comparing Objects Against Source
Figure 4B CL program OBJ006CL
OBJ006CL: + PGM PARM(&OBJ &ERRONLY) DCL VAR(&OBJ) TYPE(*CHAR) LEN(20) DCL VAR(&LIBRARY) TYPE(*CHAR) LEN(10) DCL VAR(&SCANOBJ) TYPE(*CHAR) LEN(10) DCL VAR(&ERRONLY) TYPE(*CHAR) LEN(4) /* Split qualified name */ CHGVAR VAR(&SCANOBJ) VALUE(%SST(&OBJ 1 10)) CHGVAR VAR(&LIBRARY) VALUE(%SST(&OBJ 11 10)) /* Run DSPOBJD for requested objects */ DSPOBJD OBJ(&LIBRARY/&SCANOBJ) OBJTYPE(*PGM *FILE *CMD) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/DSPOBJD) MONMSG MSGID(CPF2123) EXEC(DO) SNDPGMMSG MSG('No objects were selected. Report not + executed.') MSGTYPE(*DIAG) SNDPGMMSG MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE) GOTO CMDLBL(ENDPGM) ENDDO /* Read object description and produce report */ OVRDBF FILE(QADSPOBJ) TOFILE(QTEMP/DSPOBJD) CALL PGM(OBJ006RG) PARM(&ERRONLY) DLTOVR FILE(*ALL) /* Delete work file */ DLTF FILE(QTEMP/DSPOBJD) /* End program */ ENDPGM: + ENDPGM
TechTalk: Comparing Objects Against Source
Figure 4C CL program OBJ006CLA
OBJ006CLA: + PGM PARM(&LIBRARY &FILE &MEMBER &SRCCHGDATE) DCL VAR(&LIBRARY) TYPE(*CHAR) LEN(10) DCL VAR(&FILE) TYPE(*CHAR) LEN(10) DCL VAR(&MEMBER) TYPE(*CHAR) LEN(10) DCL VAR(&SRCCHGDATE) TYPE(*CHAR) LEN(13) RTVMBRD FILE(&LIBRARY/&FILE) MBR(&MEMBER) SRCCHGDATE(&SRCCHGDATE) MONMSG MSGID(CPF9810 CPF9812 CPF9815) EXEC(CHGVAR + VAR(&SRCCHGDATE) VALUE(' ')) ENDPGM
TechTalk: Comparing Objects Against Source
Figure 4D RPG program OBJ006RG
FQADSPOBJIP E DISK FQPRINT O F 132 OA PRINTER * I 'OBJ006CLA' C PGM1 I 'Missing source' C MSG1 I 'Different date/time' C MSG2 * I DS I 1 13 MBRCHG I 2 7 MBRDAT I 8 13 MBRTIM I DS I 1 13 OBJCHG I 1 1 ODSRCC I 2 7 ODSRCD I 8 13 ODSRCT * * Parameter is whether to print errors only (*YES, *NO) C *ENTRY PLIST C PARM OPTION 4 * C ODSRCM IFNE *BLANK * Format object name for printing C CLEAROBJECT C ODLBNM CAT '/':0 OBJECT 21 C OBJECT CAT ODOBNM:0 OBJECT * Format source member name for printing C CLEARSRCMBR C ODSRCL CAT '/':0 SRCMBR 32 C SRCMBR CAT ODSRCF:0 SRCMBR C SRCMBR CAT '/':0 SRCMBR C SRCMBR CAT ODSRCM:0 SRCMBR * Get last date/time changed for source used to create object C CALL PGM1 C PARM ODSRCL C PARM ODSRCF C PARM ODSRCM C PARM MBRCHG * Check for errors C CLEARMESSAG C MBRCHG IFEQ *BLANK C MOVELMSG1 MESSAG 24 C ELSE C MBRCHG IFNE OBJCHG C MOVELMSG2 MESSAG C END C END * Print C OPTION IFEQ '*NO' C MESSAG ORNE *BLANK C EXCPTPRINT C END C END * Before first cycle: get system date and time C *INZSR BEGSR C TIME SYS 120 C MOVELSYS SYSTIM 60 C MOVE SYS SYSDAT 60 C ENDSR * OQPRINT H 202 OA O OR 1P O SYSDATY 8 O SYSTIM 18 '0 : : ' O 69 'INTEGRITY OF SOURCE USED' O 87 'TO CREATE OBJECTS' O 127 'CMPOBJSRC - Page' O PAGE 3 132 O H 0 OA O OR 1P O 6 'Object' O 55 'Source Member' O 84 'Comments' O H 2 OA O OR 1P O 6 '______' O 55 '_____________' O 84 '________' O EF 1 PRINT O OBJECT 21 O ODOBTP 30 O ODOBAT 41 O SRCMBR 74 O MESSAG 100 O TF1 LR O + 10 '** END OF REPORT **'
LATEST COMMENTS
MC Press Online