2

プログラム ソースを指定する方法はありますか?コンパイル時に使用するアクティベーション グループのオプションはありますか?

as/400 上のほとんどのプログラムでは、アクティベーション グループの処理を変更する必要があります (デフォルトの動作はまったく役に立たないため...)。これらのプログラムの 1 つをコンパイルするたびに、コンパイラ オプションを設定することを覚えておく必要があります (これは PDM にあります:プログラムに応じて、 enter 14、 hit F4、 change DFTACTGRPfrom *YESto *NO、 hit enter、 change ACTGRPto *NEWor )。*CALLERそのため、最初にコメントが付いたプログラムがたくさんあります。大量の感嘆符があり、プログラマーにそうするように思い出させます。そして、はい、忘れることもあります。

自分を覚えなくていいようにするコツはありますか?

4

3 に答える 3

5

これらのコンパイラー・オプションは、RPGLE または CLLE プログラム・ソースで設定できます。

RPGでは、ソースの先頭で H-Specs を使用してコンパイラ オプションを設定します。このような:

HDFTACTGRP(*NO) ACTGRP(*CALLER)

そこにある他のものに追加するだけです。

H DEBUG DATEDIT(*YMD)
H DFTACTGRP(*NO) ACTGRP(*CALLER)
H BNDDIR('SRVBNDDIR')
H MAIN(main)
F OUTPUT   O    F 3000        DISK    USROPN
D ...
 * procedures, etc.

CLには、DCLPRCOPT実際にはコマンドではない (実行時に実行されないため)特別なコマンドがありますが、コンパイラ オプションを設定する方法です。

DCLPRCOPT DFTACTGRP(*NO) ACTGRP(*CALLER)

プログラムの先頭に置くだけです。私は通常、変数の宣言の後ろ、実際のコマンドの前に置きます。また、短いコメントを追加します。これは、私のコードを正す可能性のあるすべての人が、そこで行われていることを理解しているとは思わないからです。

PGM        PARM(&SOMEPARM)
DCL        VAR(&SOMEPARM) TYPE(*CHAR) LEN(*64)
DCL        VAR(&COUNTER) TYPE(*DEC) LEN(5 0) 

/* Setting options for compilation of this program */
/* This is a permanent job, so we want a *NEW activation group. */
DCLPRCOPT DFTACTGRP(*NO) ACTGRP(*NEW)

/* do actual work here in a loop */
/* ..... */

ENDPGM

ここで、プログラムをコンパイルすると ( 14PDM に入力して Enter キーを押すだけです)、ソースで指定した活動化グループの動作になります。そこには自分自身を思い出すものは何も残っていません。

于 2012-07-19T13:42:11.213 に答える
2

@kratenkoの提案以外の別のアプローチ。デフォルトの会社設定がある場合は、を使用してコマンドのデフォルト値を変更できますCHGCMDDFT。などCHGCMDDFT CRTBNDRPG 'DFTACTGRP(*NO)'など.. ここでの私たちの慣例は、特にいくつかの特別な非標準設定については、常に H-spec に設定することです。誰かが忘れた場合、デフォルトの会社設定が使用されます。このアプローチの問題点の 1 つは、更新されたコマンドが OS の更新後にリセットされる可能性があることです。2つのアプローチのいずれかを使用できます

  1. すべての CHGCMDDFT を CL コードに入れ、OS をアップグレードするたびに再実行します
  2. CHGCMDDFT に必要なコマンドをライブラリーに複製し、このライブラリーをシステム・ライブラリー・リストに入れます。

他のコマンドのデフォルトをかなり変更しますが、上記のアプローチ 1 を好みます。お役に立てれば

于 2012-07-20T04:18:35.037 に答える
1

H 仕様は間違いなくプログラムの 99% で前進していますが、h 仕様で設定できないコンパイラ オプションが見つかることがあります。私は過去に、これらのオプションをソース ヘッダーにコメントとして追加し、コンパイル時に自動的に適用するソース管理ソフトウェアを使用しました。異なるマシンでのコンパイルの問題を解決するために、これらのコメントを読み取ることができる独自のコンパイル ユーティリティを作成しました。これはかなり単純な CL プログラムです。コメントのフォーマットを決めるだけです。

于 2012-09-11T09:27:27.837 に答える