まず、OUTREC FIELDS =を使用しないでください。またはINREC FIELDS =。またはOUTFIL OUTREC =。
FIELDS =は「過負荷」です。同じ言葉は、異なる場所で異なることを意味します。
BUILDはFIELDS = INRECとOUTREC、OUTRECのOUTRECでは現代版です。
INREC BUILD =、OUTREC BUILD =、OUTFIL BUILD =を使用します。
BUILDは、これらのコンテキストでのFIELDS/OUTRECの「エイリアス」なので、処理との違いはなく、コンピュータとの違いはなく、人間の違いだけです。
SORT FIELDS=COPY
INREC BUILD=(02:
26,5,
38,8,
22:
15,9,
46:
C'AAA')
人が読めるかたちでの提案。 SORTは気にしないので、人間のためにあなたのコードを書いてください。私は冗長な7:を削除したことに注意してください。列7は次に利用可能な位置であるため、指定するだけで物事を混乱させるだけです。
SORT記号を使用することも検討してください。
SORT FIELDS=COPY
INREC IFTHEN=(WHEN=INIT,
BUILD=(SEQNUM,
1,
ZD,
START=0,
26,5,
38,8,
22:
15,9,
46:
C'AAA')),
IFTHEN=(WHEN=(1,1,CH,NE,C'9'),
OVERLAY=(1:X))
あなたが望むのは、シーケンス番号を使用することです。上記のコードは、Zoned Decimalとして各出力レコードに1バイトのシーケンス番号を含んでいます。 「文字」番号。シーケンス番号のデフォルトの開始は1ですが、あなたの場合はSTART =で簡単な0から開始します。 11番目のシーケンス番号以降は切り捨てられても問題ありません(下位値はそのままです)。
ほぼ。レコードをフォーマットした後、シーケンス番号をテストします。 "9"でなければ、OVERLAYを使ってその最初のバイトだけを空白(コードのX)に変更します。
= INITは無条件に、レコードごとに行われ、必要に応じて、あなたがそれらの多くを持つことができますザが順番に処理されIFTHEN =(。
IFTHEN =(=(logicalexpressionがどのWHENの後に来なければなりません= INITであり、case/select-style文(またはCOBOL EVALUATE)のように動作しますIFTHEN =(WHEN =(論理区切りがtrueの場合、HFT = NEXTが指定されていない限り、IFTHENの処理は中止されます)
「10分の1」のレコードでは何をしていますか?別の人は異なるものを意味しますか? –
最初の位置に空白で始まる9個のレコードがあります。ポジション。それ以降のレコードは最初の位置に9を持ちます。次の9つのレコードは最初の位置にスペースがあり、1つ後に1つ目の位置に '9'が付きます。 –