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 **'
Business users want new applications now. Market and regulatory pressures require faster application updates and delivery into production. Your IBM i developers may be approaching retirement, and you see no sure way to fill their positions with experienced developers. In addition, you may be caught between maintaining your existing applications and the uncertainty of moving to something new.
IT managers hoping to find new IBM i talent are discovering that the pool of experienced RPG programmers and operators or administrators with intimate knowledge of the operating system and the applications that run on it is small. This begs the question: How will you manage the platform that supports such a big part of your business? This guide offers strategies and software suggestions to help you plan IT staffing and resources and smooth the transition after your AS/400 talent retires. Read on to learn:
LATEST COMMENTS
MC Press Online