大型机数据集

时间:2010-06-08 06:55:34

标签: mainframe

我有一个顺序数据集,其中包含一些按列格式化的数据。 假设下面是我的数据集的格式。

Emp_ID    Emp_name     Emp_addr
---------------------------------

我想从数据集中删除列Emp_Name。我可以不编写COBOL程序吗?如果我们有任何相同的命令,请告诉我。

谢谢和问候, Manasi Kulkarni。

4 个答案:

答案 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线命令设置左边界,然后使用“左移”('线命令)将数据左侧的数据移位以有效消除它。