1

私は COBOL と AS/400 IBM iSeries の世界に不慣れで、このコミュニティで使用されているベスト プラクティスに興味があります。

すべての COBOL メンバー、または一度に複数のメンバーのバッチ コンパイルをどのように実行しますか?

AS/400 ソース ファイルは、ライブラリ、ファイル オブジェクト、およびメンバで編成されていることがわかります。コンパイルする COBOL src コードであるファイル メンバーをどのように検出しますか? qshell コマンドを使用してメンバー ファイル タイプ (この場合は CBL) を取得できますか?

ありがとう、アック

4

2 に答える 2

4

一般的な PDM 手動方法:

おそらく最も単純で最も広く使用されている方法は、「グリーン スクリーン」(5250 エミュレーション) セッションで PDM (プログラム開発マネージャー) を使用することです。これにより、コンパイルするすべてのプログラムを手動で選択できます。これはあなたが探していた答えではないかもしれませんが、その単純なアプローチと開発者の手に決定を委ねているため、最も広く使用されている可能性があります。

人々は通常、[PDM の開始] コマンドを使用します。このコマンドSTRPDMは、ライブラリ、オブジェクト (ファイル)、またはメンバーのリストを操作するためのオプションを選択できるメニューを提供します。WRKLIBPDM(個人的には、対応するコマンド 、 、WRKOBJPDM、またはを直接使用することを好みますWRKMBRPDM。) これらの各レベルで、F17 (シフト F5) を押してリストをフィルター処理できます。

F18 (シフト F6) を使用すると、オプションを [バッチでコンパイル] に設定できます。これは、個々のコンパイルがジョブ キューに送信され、独自のジョブでコンパイルされることを意味します。また、使用するジョブ記述を指定することもできます。これにより、ジョブが配置されるジョブ キューが決まります。シングル スレッドのジョブ キューもあれば、一度に複数のジョブを実行するジョブ キューもあります。F16 を使用して、独自の PDM オプションをカスタム定義できます。

ライブラリ レベルで開始することを選択した場合は、オブジェクト (ソース ファイル) を処理する各ライブラリの横にオプション 12 を入力できます。

オブジェクト レベルでは、タイプが *FILE で属性が 'PF-SRC' (またはおそらく 'PF38-SRC') のオブジェクトのみを表示する必要があります。次に、メンバーを操作するソース ファイルの横にオプション 12 を入力できます。

*CBL*メンバー レベルでは、 (システムでの処理方法に応じて) COBOL メンバーが CBL、CBLLE、SQLCBL、SQLCBLE、さらには System/38 または /36 バリアントになる可能性があるため、型にフィルターをかけたい場合があります。コンパイルする各メンバーの横にオプション 14 (またはカスタム定義のオプション) を入力します。F13 (シフト F1) を使用して、リストの下のオプションを繰り返すことができます。

この方法では手動で選択するため、コンパイルするすべての COBOL プログラムが自動的に選択されるわけではありません。ただし、一度に多数のコンパイルを送信することができ、プログラマーの裁量を使用して、選択するメンバーと使用するオプションを決定します。

于 2012-07-25T22:51:07.383 に答える
3

多くの (ほとんどではないにしても) IBM i の開発者は、通常、qshell にあまり慣れていません。私たちのほとんどは、CL で自動化スクリプトを作成します。私のような何人かの反逆者も REXX を使用するかもしれませんが、残念ながらこれはまれです。システム内のすべてのプログラムを再コンパイルしたいということはあまりありません。通常、作業中のプログラムのみをコンパイルするか、何らかのファイル変更の影響を受けるプログラムのみを選択します。

すべてをコンパイルすることは、単純な問題ではないかもしれません。一部のライブラリまたはソース ファイルは、単に古いソースのアーカイブ コピーであり、実際にはコンパイルしたくない場合や、正常にコンパイルされない場合があることに注意してください。どのメンバーがプログラムではなく COBOL コピーブックであるかを区別する必要があります。ILE では、どのメンバーをプログラム、モジュール、またはサービス・プログラムとしてコンパイルする必要があるかを区別する必要があります。モジュールとバインドするプログラムをコンパイルする前に、モジュールをコンパイルする必要がある場合があります。これらのモジュールは、必ずしも COBOL で作成されているとは限りません。または、COBOL モジュールが他の言語 (おそらく CL や RPG) で ILE プログラムにバインドされている場合もあります。

では、システム全体の再コンパイルを CL プログラムでどのように自動化するのでしょうか? を使用して、システム上のすべてのソース ファイルのリストを取得できますDSPOBJD *ALL/*ALL *FILE OUTPUT(*FILE) OUTFILE( ___ )。出力ファイルには、どのオブジェクトがソース ファイルであるかを区別するためのファイル属性列が含まれています。CL プログラムはこれを読み取ることができ、ソース ファイルごとに、詳細なメンバー情報のファイルをDSPFD &lib/&file TYPE(*MBR) OUTPUT(*FILE) OUTFILE( ___ ). このファイルにはメンバー タイプ情報が含まれており、どのメンバーが COBOL であるかを判断するのに役立ちます。そこからRTVOBJD、それがプログラム、モジュール、サービス プログラムのいずれであったかを判断できます。

また、個々のプログラム、モジュール、またはサービス プログラムがどのようにコンパイルされたかについてのオプションを知る必要がある場合もあります。私はよく、この問題を解決するために、特別な処理が必要な各オブジェクトのメンバーを含むソース ファイル (通常は BUILD と呼びます) を作成します。このメンバーは CL かもしれませんが、私はよく REXX を使用します。実際、動的インタープリター言語としての REXX の力を利用して、すべてを REXX で実行したくなるかもしれません。しかし、それは私だけです。

于 2012-07-25T23:36:41.170 に答える