语句:以前的文件从远程服务器位置提取到大型机。然后获取这些文件的内容,并以顺序文件的形式保存在主机上。但有时,有些文件名包含空格。由于此作业在获取其内容时失败。
现在为了解决这个问题,我们从服务器获取所有文件,并将好文件和坏文件分开。现在我们只获取好的文件内容。
问题:在重命名文件时,我们在文件名中添加了前缀Process_和Odate(从控件M获取)。但早些时候,它是通过unix代码在jcl中完成的,如下所示。
伪代码:打印"rename“$1”"Process_“%%DAT "_”$1
我们正在从一个软件控件-M获取ODATE。
Jcl代码:
//JOBNAME JOB (DEE),'Job Desc',CLASS=P,MSGCLASS=J,
// MSGLEVEL=(1,1),COND=(0,NE)
//* %%SET %%DAT = %%$ODATE
//STEP01 EXEC PROC1PROC1代码:
//STEP02 EXEC PGM=SORT
//SORTIN DD DSN=DS.FILE1,
// DISP=SHR
//SORTOUT DD DSN=DS.FILE2,
// UNIT=SYSSF,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
// SPACE=(27920,(29,6),RLSE),
// DISP=(NEW,CATLG,DELETE)
//SYSIN DD DSN=DS.PARM(PARM03),DISP=SHR PARM03包含:我在这里创建unix代码来重命名文件:
SORT FIELDS=COPY
OUTFIL BUILD=(1:C'print "get " r_fi',18:SEQNUM, -
3,ZD,22:C'" //DD:upload"',/,1:C'print "rename " r_fi', -
21:SEQNUM,3,ZD,24:C' ', -
25:C' " " "Process_" %%DAT "_" r_fi',53:SEQNUM,3,ZD,80:X)
/* 我正在动态创建的unix代码:这里取决于文件的数量p_fi01,p_fi02,p_fi03.....是生成的。我将unix代码保存在一个dataset中,并将其作为instream传递以供运行。
问题是,它无法获取DAT变量中的值。有没有什么办法,我可以把D的值从jcl传递给proc,并附加一个
"Process_“在proc中使用排序卡。
示例数据:获取文件File1.csv内容,然后将其重命名为Process_20140101_File1.csv
发布于 2014-02-01 19:50:55
假设代码的其余部分都是OK的,那么使用JPn的DFSORT就相当简单了。DFSORT是一种特殊的DFSORT符号,允许在控制卡中使用多达10个参数的分割值。
下面是一个示例:
// SET INPARM='ABC'
//*
//STEP0100 EXEC PGM=SORT,PARM='JP0"&INPARM"'
//SYSOUT DD SYSOUT=*
//SYMNOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
INREC BUILD=(JP0)
//SORTIN DD *
IRRELEVANT DATA, JUST AN EXAMPLE 我已经使用SET创建了一个JCL符号,但是您已经通过CONTROL-M创建了自己的符号,所以只需将PARM上的&INPARM替换为您的CONTROL-M符号即可。
JPn通过JP9表示JP0。三个独立的数据片段可能如下所示:
//STEP0100 EXEC PGM=SORT,PARM='JP0"&INPARM1",JP1"&INPARM2",JP2"&INPARM3"'SYMNOUNT DD是可选的,但非常非常有用,因为它将显示符号的翻译值。
假设您的其余代码是正确的,您将进行以下更改:
25:C' " " "Process_"',JP0,C'"_" r_fi',53:SEQNUM,3,ZD,80:X) 并在EXEC卡上包含PARM,PARM='JP0"[yourControl-M-symbol]"'
SyncSort没有JPn,所以你很幸运你有DFSORT。SyncSort需要一种不同的技术。
https://stackoverflow.com/questions/21481400
复制相似问题