1

プログラムを実行するためにいくつかの入力データを準備する必要があります。データは次の形式である必要があります。

 UID (1-11)|TxtLen (12-16)| Text (17-62)

並べ替えを使用してフィールドを適切に配置し、UID とテキスト フィールドを取得できます。「TxtLen」には、テキスト フィールドの先頭からテキスト フィールドの最後の文字までの文字数が含まれている必要があります。

i.e. “Hello”’s TxtLen is 5, “Hel lo”’s TxtLen is 6, “Hello World”’s TxtLen is 11, etc...

JCL のみを介して TxtLen を取得する方法があるかどうかを知りたいのですが、これを行うにはプログラムが必要ですか?

-ありがとう

4

2 に答える 2

6

プログラムが必要になります。

Stack Overflow で、「JCL のみ」で何かが可能かどうかを尋ねるメインフレームの質問がかなりの数見られます。JCLは主にプログラムを実行する手段であり、実際にはそれ以外のことはほとんどないことに注意してください。たとえば、あなたが言うとき

並べ替えを使用してフィールドを適切に配置し、UID とテキスト フィールドを取得できます

sortプログラムです。これはたまたまほとんどのシステムで見られるプログラムです (さまざまなベンダーの実装があり、IBM や SyncSort、CA などがあります) 。メインフレーム システムで一般的に見られるプログラムは他にもたくさんあります。

そして、ペダン的に言うと、JCL は実際には何もしません。JES は JCL解釈するときに作業を行います。

特定の状況では、SORT 出口を作成したり、Rexxでデータを処理したり、一部のUnix System Services コマンドを使用して、 BPXBATCHまたはCOZBATCHを介してそれらを実行したりできます。

于 2012-06-18T02:26:14.327 に答える
1

REXX プログラムを使用して、このようなアドホックな変換を行いました。プログラムは非常に単純です。

  • 入力ファイルと出力ファイルを割り当てる
  • 両方のファイルを開いてループを開始します。
  • 入力を読む
  • テキスト フィールドを抽出し、末尾のスペースを取り除く
  • トリミングされたテキスト フィールドの長さを取得し、5 桁の数値としてフォーマットします
  • オーバーレイ番号を Len フィールド位置のレコードに戻します
  • 更新されたレコードの繰り返しループをファイルの終わりまで書き出す
  • 両方のファイルを閉じる
  • 割り当てられたファイルを解放する

実際のコードが必要な場合はお知らせください。文字列関数と操作に関しては、REXX が COBOL よりも優れていることがわかりました。まさにそれを実現するために、COBOL から REXX ルーチンを作成して呼び出したこともあります。

于 2012-10-25T04:12:16.580 に答える