Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 无法获取JCL排序';他出去工作了_Sorting_Mainframe_Jcl - Fatal编程技术网

Sorting 无法获取JCL排序';他出去工作了

Sorting 无法获取JCL排序';他出去工作了,sorting,mainframe,jcl,Sorting,Mainframe,Jcl,我正在学习大型机编程(TSO、JCL、COBOL…),我遇到了一个似乎还无法解决的问题 我有一个包含3个字段的记录的文件,我想使用“outfil”在输出文件中只包含某些记录 我的JCL如下所示: 000001 //C8112J1 JOB (12345678),C8112,MSGCLASS=H, 000002 // MSGLEVEL=(1,1),NOTIFY=C8112 (...) 000007 //DSNDEL EXEC PGM=IDCAMS 000008

我正在学习大型机编程(TSO、JCL、COBOL…),我遇到了一个似乎还无法解决的问题

我有一个包含3个字段的记录的文件,我想使用“outfil”在输出文件中只包含某些记录

我的JCL如下所示:

000001 //C8112J1  JOB (12345678),C8112,MSGCLASS=H, 
000002 //            MSGLEVEL=(1,1),NOTIFY=C8112 
(...)   
000007 //DSNDEL   EXEC PGM=IDCAMS 
000008 //SYSPRINT DD SYSOUT=* 
000009 //SYSIN    DD * 
000010   DELETE   C8112.DATA.FX.SORT 
000011   SET      MAXCC = 0 
000012 /* 
(...)
000014 //*                  --------- S O R T ----------- 
000020 //MYSORT  EXEC PGM=SORT,COND=(0,NE) 
000021 //SORTIN  DD DSN=C8112.DATA.FX,DISP=SHR 
000022 //SORTOUT DD DSN=C8112.DATA.FX.SORT, 
000023 //           SPACE=(TRK,(100,100),RLSE), 
000024 //           DISP=(NEW,CATLG,DELETE), 
000025 //           DCB=(LRECL=61,RECFM=FB) 
000026 //SYSIN   DD * 
000027   SORT    FIELDS=COPY 
000028 //* SORT  FIELDS=(1,18,CH,A) OU SORT=COPY 
000029   OUTFIL  INCLUDE=(1,18,CH,EQ,C'ANDRADE,LUISA') 
...
000031 //*       OUTREC=(39,41,1,18,19,38) 
000032   END 
000033 //SYSOUT  DD SYSOUT=* 
000034 /* 
  000020 //MYSORT  EXEC PGM=SORT,COND=(0,NE) 
  000021 //SORTIN  DD DSN=C8112.DATA.FX,DISP=SHR 
  000022 //SORTOUT DD DSN=C8112.DATA.FX.SORT, 
  000023 //           SPACE=(TRK,(100,100),RLSE), 
  000024 //           DISP=(NEW,CATLG,DELETE), 
  000025 //           DCB=(LRECL=61,RECFM=FB) 
  000026 //SYSIN   DD * 
  000027   SORT    FIELDS=COPY 
  000029   OUTFIL  INCLUDE=(1,18,CH,EQ,C'ANDRADE,LUISA') 
  ...
  000032   END 
  000031 /*
  000033 //SYSOUT  DD SYSOUT=* 
  000034 //* 
和输出文件:

000001 LUIS,CARLOS       AV.PAULO VI         RMR     
000002 DIAS,PATTY        RUA PEDRO CALMON    LX 
000003 ANDRADE,LUISA     AV. DA LIBERDADE    LX     (1)
000004 SILVA,TONI        PALACIO VALMOR      LX 
000005 ANDRADE,LUISA     AV. DA BOAVISTA     POT    (2) 
000006 CISCO,MANUEL      QUINTA DA AVELEDA   TC 
难道我不应该只得到记录(1)和(2)?!顺便说一句,我还尝试了“outrec”来更改字节组织,但它也不起作用。 有人能告诉我我做错了什么吗?

试试下面的方法:

000001 //C8112J1  JOB (12345678),C8112,MSGCLASS=H, 
000002 //            MSGLEVEL=(1,1),NOTIFY=C8112 
(...)   
000007 //DSNDEL   EXEC PGM=IDCAMS 
000008 //SYSPRINT DD SYSOUT=* 
000009 //SYSIN    DD * 
000010   DELETE   C8112.DATA.FX.SORT 
000011   SET      MAXCC = 0 
000012 /* 
(...)
000014 //*                  --------- S O R T ----------- 
000020 //MYSORT  EXEC PGM=SORT,COND=(0,NE) 
000021 //SORTIN  DD DSN=C8112.DATA.FX,DISP=SHR 
000022 //SORTOUT DD DSN=C8112.DATA.FX.SORT, 
000023 //           SPACE=(TRK,(100,100),RLSE), 
000024 //           DISP=(NEW,CATLG,DELETE), 
000025 //           DCB=(LRECL=61,RECFM=FB) 
000026 //SYSIN   DD * 
000027   SORT    FIELDS=COPY 
000028 //* SORT  FIELDS=(1,18,CH,A) OU SORT=COPY 
000029   OUTFIL  INCLUDE=(1,18,CH,EQ,C'ANDRADE,LUISA') 
...
000031 //*       OUTREC=(39,41,1,18,19,38) 
000032   END 
000033 //SYSOUT  DD SYSOUT=* 
000034 /* 
  000020 //MYSORT  EXEC PGM=SORT,COND=(0,NE) 
  000021 //SORTIN  DD DSN=C8112.DATA.FX,DISP=SHR 
  000022 //SORTOUT DD DSN=C8112.DATA.FX.SORT, 
  000023 //           SPACE=(TRK,(100,100),RLSE), 
  000024 //           DISP=(NEW,CATLG,DELETE), 
  000025 //           DCB=(LRECL=61,RECFM=FB) 
  000026 //SYSIN   DD * 
  000027   SORT    FIELDS=COPY 
  000029   OUTFIL  INCLUDE=(1,18,CH,EQ,C'ANDRADE,LUISA') 
  ...
  000032   END 
  000031 /*
  000033 //SYSOUT  DD SYSOUT=* 
  000034 //* 
SORT SYSIN不允许“注释”。那些你认为可能是评论的台词其实不是。它们终止SYSIN DD语句。基本上我刚刚摆脱了:

//* SORT  FIELDS=(1,18,CH,A) OU SORT=COPY

然后一切都很好。记住,JCL注释不是排序注释!
DD*
之后的内容是数据,而不是JCL源语句,因此JCL类型的注释约定在这里不起作用。
DD*
通常以以下行开头终止:
/*

尝试以下操作:

000001 //C8112J1  JOB (12345678),C8112,MSGCLASS=H, 
000002 //            MSGLEVEL=(1,1),NOTIFY=C8112 
(...)   
000007 //DSNDEL   EXEC PGM=IDCAMS 
000008 //SYSPRINT DD SYSOUT=* 
000009 //SYSIN    DD * 
000010   DELETE   C8112.DATA.FX.SORT 
000011   SET      MAXCC = 0 
000012 /* 
(...)
000014 //*                  --------- S O R T ----------- 
000020 //MYSORT  EXEC PGM=SORT,COND=(0,NE) 
000021 //SORTIN  DD DSN=C8112.DATA.FX,DISP=SHR 
000022 //SORTOUT DD DSN=C8112.DATA.FX.SORT, 
000023 //           SPACE=(TRK,(100,100),RLSE), 
000024 //           DISP=(NEW,CATLG,DELETE), 
000025 //           DCB=(LRECL=61,RECFM=FB) 
000026 //SYSIN   DD * 
000027   SORT    FIELDS=COPY 
000028 //* SORT  FIELDS=(1,18,CH,A) OU SORT=COPY 
000029   OUTFIL  INCLUDE=(1,18,CH,EQ,C'ANDRADE,LUISA') 
...
000031 //*       OUTREC=(39,41,1,18,19,38) 
000032   END 
000033 //SYSOUT  DD SYSOUT=* 
000034 /* 
  000020 //MYSORT  EXEC PGM=SORT,COND=(0,NE) 
  000021 //SORTIN  DD DSN=C8112.DATA.FX,DISP=SHR 
  000022 //SORTOUT DD DSN=C8112.DATA.FX.SORT, 
  000023 //           SPACE=(TRK,(100,100),RLSE), 
  000024 //           DISP=(NEW,CATLG,DELETE), 
  000025 //           DCB=(LRECL=61,RECFM=FB) 
  000026 //SYSIN   DD * 
  000027   SORT    FIELDS=COPY 
  000029   OUTFIL  INCLUDE=(1,18,CH,EQ,C'ANDRADE,LUISA') 
  ...
  000032   END 
  000031 /*
  000033 //SYSOUT  DD SYSOUT=* 
  000034 //* 
SORT SYSIN不允许“注释”。那些你认为可能是评论的台词其实不是。它们终止SYSIN DD语句。基本上我刚刚摆脱了:

//* SORT  FIELDS=(1,18,CH,A) OU SORT=COPY


然后一切都很好。记住,JCL注释不是排序注释!
DD*
之后的内容是数据,而不是JCL源语句,因此JCL类型的注释约定在这里不起作用。
DD*
通常以一行开头终止:
/*

您可以在DFSORT中使用单个*作为注释分隔符,而不是/*-正如前面所指出的那样,它会终止SYSIN,就像您编码了/。(我注意到,您确实有一个/稍后。)

您可以在DFSORT中使用单个*作为注释分隔符,而不是/*-正如已经指出的那样,它会终止SYSIN,就像您编写了/。(我注意到,您确实有一个/稍后。)

它解决了这个问题,但当我取消对“outrec”语句的注释时,它又遇到了另一个问题。我得到了MAXCC=16。但这是另一个问题。谢谢大家!@CSbl81目前的OUTREC无效(语法错误)。你想用它做什么?我正试图重新组织字段的顺序。它解决了这个问题,但当我取消对“outrec”语句的注释时,又出现了另一个问题。我得到了MAXCC=16。但这是另一个问题。谢谢大家!@CSbl81目前的OUTREC无效(语法错误)。你想用它做什么?我想重新组织字段的顺序。