Thanks very much. I'll work with this.
Original Message:
Sent: 12/19/2024 12:31:00 PM
From: John Scott
Subject: RE: REPORTING
Hello Felicity,
If you want to use CSV utility then LIST ELEMENT will show MCF info for the current level.
You also need to specify DATA ELEMENT CHANGE LEVEL SUMMARY to get the summary of levels that you want.
This could return a lot of data so you want to narrow down the criteria in the LIST SCL as much as possible to specify a certain ENVIRON STAGE SYSTEM and not search in order to reduce the amount of processing.
There does not seem any option to filter on date so you can LIST everything then filter out everything except today !
Not very efficient but can run a batch job - I would use a REXX but maybe there is another utility to filter the date.
You could pass the APIEXTR to a REXX to then select only records with the CHGDATE is today or pass the date required into the rexx from the JCL.
Run the job every day.
VALUE.27 contains change date.
VALUE.1 = RCD TYPE
VALUE.2 = DATA TYPE
VALUE.3 = SITE ID
VALUE.4 = ENV NAME
VALUE.5 = SYS NAME
VALUE.6 = SBS NAME
VALUE.7 = ELM NAME
VALUE.8 = FULL ELM NAME
VALUE.9 = TYPE NAME
VALUE.10 = STG NAME
VALUE.11 = STG ID
VALUE.12 = STG #
VALUE.13 = STG SEQ #
VALUE.14 = PROC GRP NAME
VALUE.15 = UPDT DATE
VALUE.16 = UPDT TIME
VALUE.17 = SIGNOUT ID
VALUE.18 = ELM VV
VALUE.19 = ELM LL
VALUE.20 = CMPNT VV
VALUE.21 = CMPNT LL
VALUE.22 = RCD CNT
VALUE.23 = RCD #
VALUE.24 = CHG VV
VALUE.25 = CHG LL
VALUE.26 = CHG USRID
VALUE.27 = CHG DATE
VALUE.28 = CHG TIME
VALUE.29 = # STMTS
VALUE.30 = # INSERT
VALUE.31 = # DELETE
VALUE.32 = SYNC
VALUE.33 = CCID
VALUE.34 = COMMENT
--------------------------------------------------------------------------------------
There is an easier option -- may or not be acceptable for your situation....
--------------------------------------------------------------------------------------
Show them the ENDEVOR DISPLAY option in ISPF - Display the inventory location you want and then use S for summary of levels.
But first - select only elements with todays date
Enter EONLY CURDTE 25DEC24
or a range EONLY CURDTE 25DEC24-02JAN25
finally sort the filtered results:
ESORT CURDTE
Then you can see what's changed today and use S to select and see INSERTS and DELETES
------------------------------------------------------------------------------------------
For the CSV I use JCL like this...
// SET CSV=new.dataset.csv
//DELETE EXEC PGM=IEFBR14
//DEL1 DD DSN=&CSV,DISP=(MOD,DELETE),SPACE=(1,(1,0),RLSE
//STEP01 EXEC PGM=NDVRC1,REGION=4096K,
// PARM='CONCALL,DDN:CONLIB,BC1PCSV0'
//SYSUDUMP DD SYSOUT=*
//BSTIPT01 DD *
LIST ELEMENT *
FROM ENV environ SYSTEM * SUB * TYPE * STAGE *
DATA ELEMENT CHANGE LEVEL SUMMARY
OPTION PATH PHYSICAL RETURN ALL SEARCH .
/*
//APIEXTR DD DSN=&CSV,
// DCB=(DSORG=PS,RECFM=FB,LRECL=4092),
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(500,100),RLSE)
//C1MSGS1 DD SYSOUT=*
//BSTERR DD SYSOUT=*
//*
//RUNREXX EXEC PGM=IKJEFT1A
//CSV DD DISP=SHR,DSN=&CSV
//SYSTSPRT DD SYSOUT=*
//SYSEXEC DD DSN=xxx.JPDS.REXX,DISP=SHR
//SYSTSIN DD *
%CSVREAD
REXX
***************************** Top of Data **************************
/* REXX */
recs = 0
report = ''
/* */
do until cc = 2 /* until eof cc */
"execio 1 DISKR csv" /* read 1 record from extract */
cc = rc /* save cc */
values = 0 /* count csv items in row */
recs = recs + 1 /* count csv rows */
call unpack /* unpack between commas */
/* */
/* record 1 - report headings */
/* */
if recs = 1 then do /* if first record */
do z = 1 to values /* for each value */
say 'VALUE.'Z '=' value.z /* list the headings */
end
end
/* */
/* select records for processing and fields to report */
/* */
select
when value.27 > "2024/10/08" then do /* selection criteria */
report = ,
VALUE.18 'ELM VV ' ,
VALUE.19 'ELM LL ' ,
VALUE.20 'CMPNT VV ' ,
VALUE.21 'CMPNT LL ' ,
VALUE.22 'RCD CNT ' ,
VALUE.23 'RCD # ' ,
VALUE.24 ' CHG VV ' ,
VALUE.25 ' CHG LL ' ,
VALUE.26 ' CHG USRID ' ,
VALUE.27 ' CHG DATE ' ,
VALUE.28 ' CHG TIME ' ,
VALUE.29 ' # STMTS ' ,
VALUE.30 ' # INSERT ' ,
VALUE.31 ' # DELETE ' ,
VALUE.32 ' SYNC ' ,
VALUE.33 ' CCID ' ,
VALUE.34 ' COMMENT '
/* */
say report /* report the values */
end /* value selected */
otherwise do
nop /* otherwise do nothing */
end /* otherwise */
end /* select */
end /* do until */
exit
unpack:
/* get items between commas and save as value.1 to value.0 */
pull csv /* read a csv record */
do forever
if pos(',',csv) = 0 then do /* no comma in string */
values = values + 1 /* count */
value.values = strip(TRANSLATE(csv,' ','"')) /* remove quotes*/
leave /* finished this row */
end /* */
else do /* comma in string */
values = values + 1 /* count */
/* keep value up until first comma */
value.values = substr(csv,1,pos(',',csv))
value.values = strip(value.values,t,',') /* STRIP COMMA */
value.values = strip(value.values,b,'"') /* STRIP QUOTES*/
/* save remaining csv after first comma */
csv = substr(csv,pos(',',csv)+1,length(csv))
end
end /* forever */
return
**************************** Bottom of Data ****************************
Original Message:
Sent: Dec 16, 2024 01:42 PM
From: Felicity Vaughan
Subject: REPORTING
I want to get a report of daily lines of change in each element. In other words, check lowest stage, has anything changed today? If so, how many lines were changed. I thought I might be able to do some kind of search for anything where the VVLL is not 0100, but that isn't daily and when I get the results and then have to find a way to report how many lines of code changed for the elements that had activity today.
If anyone has such a report, or has an idea for creating one, please share,
Thanks,
Felicity.
------------------------------
Felicity
------------------------------