Progress 4GL または WebSpeed を使用してアサーションを実装する最良の方法は何ですか?
4 に答える
Progress にはアサーションのネイティブ処理がありませんが、私が思いついたのは次のとおりです。
IF NOT <assertion> THEN
RUN assertionFailed.p.
assertionFailed.p は、プログラマーに電子メールを送信するか、条件をログに記録し、正常に終了することもできます。
通常、アサーションは最終コードから省略されるため、プリプロセッサ ルートをお勧めします。次のようにして、2 つのインクルード ファイルとして設定できます。本番用にコンパイルするときは、debugalert.i が空であることを確認してください。assert.i を編集して、メッセージ、停止、電子メールなどを好きなようにすることができます...
アサーションをセットアップするには、{assert.i &condition=} の形式に従います。
/* assert.i */ {debugalert.i}
&IF DEFINED( DEBUGALERT ) <> 0 &THEN
{&CONDITION} でない場合:
MESSAGE THIS-PROCEDURE:FILENAME "ERROR...{&CONDITION}"
VIEW-AS ALERT-BOX.
/* add code to email message etc.. or stop */
終わり。
&ENDIF
/* アサーションを無効にするテストまたは開発環境の debugalert.i は、このステートメントを削除します */
&GLOBAL-DEFINE DEBUGALERT
/* テスト コードでは、次のようにします。// アサーションのテスト * /
DEF VAR h_ct AS INT NO-UNDO INIT 10.
{assert.i &CONDITION="h_ct = 8"}