我有两个文件: 第一个文件包含作业名称和开始时间,如下所示:
ZPUDA13V STARTED - TIME=00.13.30
ZPUDM00V STARTED - TIME=03.26.54
ZPUDM01V STARTED - TIME=03.26.54
ZPUDM02V STARTED - TIME=03.26.54
ZPUDM03V STARTED - TIME=03.26.56
,第二个文件包含jobname和Endtime,如下所示:
ZPUDA13V ENDED - TIME=00.13.37
ZPUDM00V ENDED - TIME=03.27.38
ZPUDM01V ENDED - TIME=03.27.34
ZPUDM02V ENDED - TIME=03.27.29
ZPUDM03V ENDED - TIME=03.27.27
现在我正在尝试将这两个文件组合起来以获取报告,例如JOBNAME START TIME ENDTIME。我已经使用ICETOOL来获取报告如果我得到JOBNAME START TIME,则ENDTIME是SPACES。如果我得到Endtime,则JOBNAME START TIME获得空间。 请告诉我如何对outrec字段进行编码,因为我已经编码了几乎所有可能的字段以获得所需的字段。但是我的输出仍然与我的要求不一样
答案 0 :(得分:2)
我不知道ICETOOL是什么(也不想在Google中查找它:-)但这是一个经典的COBOL数据处理任务。
根据您的简单数据输入,算法将是:
for every record S in startfile:
for every record E in endfile:
if S.jobnname = E.jobname:
ouput S.jobname S.time E.time
next S
endif
endfor
endfor
但是,您可能需要考虑以下事实:
通过确保E记录紧跟在S记录之后(基于时间),您可以解决第一个问题。第二个问题是doozy。
如果您在z / OS上运行(考虑到作业名称,您可能正在运行),您是否考虑过使用SMF记录中的信息来进行此收集和分析。我很确定SMF 30型记录可以保存您需要的所有内容。
假设这个是一个大型机的问题,这里有一本无耻的插件,我的一位朋友写了一本书,请查看David Stephens撰写的What On Earth is a Mainframe?(ISBN-13 = 978) -1409225355)。
答案 1 :(得分:0)
我知道,我的解决方案太迟了,但可能对新来的堆栈溢出有帮助
您可以使用JCL使用JOINKEYS
DFSORT
。
JOINKEYS F1 FIELDS=(01,08,CH,A)
JOINKEYS F2 FIELDS=(01,08,CH,A)
REFORMAT FIELDS=(F1:01,33,F2:25,08)
SORT FIELDS=COPY
OUTREC FIELDS=(01,08,25,08,34,08)
outrec将根据您的需要保存数据!