Sorting 无法获取JCL排序';他出去工作了
我正在学习大型机编程(TSO、JCL、COBOL…),我遇到了一个似乎还无法解决的问题 我有一个包含3个字段的记录的文件,我想使用“outfil”在输出文件中只包含某些记录 我的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
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无效(语法错误)。你想用它做什么?我想重新组织字段的顺序。