2012-12-17 240 views
0

我正在学习大型机编程(TSO,JCL,COBOL ...),但我遇到了一个我似乎无法解决的问题。无法获得JCL SORT的Outfil工作

我有一个记录包含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 /* 

和输出文件:

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'来改变字节组织,但它没有工作。 任何人都可以给我一个暗示我做错了什么?

回答

2

尝试以下操作:

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 

//*  OUTREC=(39,41,1,18,19,38) 

那么这一切工作正常。请记住,JCL评论不是SORT评论! DD *之后的内容是数据,而不是JCL源语句,因此JCL类型注释约定在此不起作用。 DD *通常由以下行开始的行终止:/*

+0

它解决了这个问题,但得到了另一个,当我取消注释'outrec声明。我得到了MAXCC = 16。但那是另一个问题。谢谢! – csbl81

+0

@ CSbl81 OUTREC目前无效(语法错误)。你想用它做什么? – NealB

+0

我试图重新组织字段的顺序。 – csbl81

3

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