0

私はメインフレーム プログラミング (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 /* 

および出力ファイル:

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」も試しましたが、うまくいきませんでした。私が間違っていることについて誰かが私にヒントを与えることができますか?

4

2 に答える 2

3

DFSORT では、//* ではなく単一の * をコメント区切り文字として使用できます。これは、既に指摘したように、/ をコーディングした場合と同様に SYSIN を終了します。(確かに/がありますが、後で気づきました。)

于 2012-12-18T08:11:43.397 に答える
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 コメントではないことに注意してください。a の後のDD *部分はデータであり、JCL ソース ステートメントではないため、JCL タイプのコメント規則はここでは機能しません。はDD *通常、次で始まる行で終了します /*

于 2012-12-17T16:53:06.980 に答える