我有一个顺序数据集,其中包含一些按列格式化的数据。 假设下面是我的数据集的格式。
Emp_ID Emp_name Emp_addr
---------------------------------
我想从数据集中删除列Emp_Name。我可以不编写COBOL程序吗?如果我们有任何相同的命令,请告诉我。
谢谢和问候, Manasi Kulkarni。
答案 0 :(得分:6)
您可以使用SORT消除顺序文件中的字节。
我们假设以下格式:
Employee ID Bytes 1 - 10
Employee Name Bytes 11 - 40
Employee Address Bytes 41 - 70
我们想要消除员工姓名。我们要复制前10个字节,跳过接下来的30个字节,然后复制最后30个字节。
输入顺序文件为70个字节,输出顺序文件为40个字节。
这是执行此任务的SORT JCL。您需要修改JCL以符合大型机商店的标准。
//EXAMP JOB A400,PROGRAMMER
//COPY EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=SMF.DATA,DISP=SHR
//SORTOUT DD DSN=SMF.COPY,DISP=(,KEEP),SPACE=(CYL,(2,5))
// UNIT=SYSDA
//SYSIN DD *
OPTION COPY
OUTREC FIELDS=(1,10,41,30)
/*
//
OUTREC语句表示从字节1开始复制10个字节,从字节41开始复制30个字节,总共40个字节。
这是IBM的DFSORT manual以获取更多信息。
答案 1 :(得分:0)
您还可以使用IEBGENER重新格式化数据,如下所示:
//FORMAT EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD *
EMP_ID EMP_NAME EMP_ADDR
---------------------------------
120 FIRST NEW ROAD
130 SECOND OLD ROAD
/*
//SYSUT2 DD SYSOUT=*
//SYSIN DD *
GENERATE MAXFLDS=99,MAXLITS=99
RECORD FIELD=(10,1,,1),
FIELD=(30,24,,11)
/*
//
可以找到有关IEBGENER命令语法的更多详细信息here.
答案 2 :(得分:0)
此外,如果您想要更多控制,您总是可以使用两个EXEXCIO命令编写一个快速REXX脚本来读取文件,并在第二个命令中只写入您想要的部分。
答案 3 :(得分:0)
对于较小数据集的一次性更改 - 这可能不合适 - ISPF编辑器可以执行此操作。只需使用BNDS线命令设置左边界,然后使用“左移”('线命令)将数据左侧的数据移位以有效消除它。