RPG でのエラー処理 (QCMDEXC)

RPG から CL コマンドの実行 (system() 関数を使って)」とほぼ同じ処理を QCMDEXC を使用して書き直してみたのがこちらになります。
エラー処理の部分はまったく同じコードを使っています。

     H DFTACTGRP(*NO)                                                                               
      *                                                                                             
     D PSDS           SDS                                                                           
     D   CPFMSG                       7a   OVERLAY(PSDS:40)                                         
      *                                                                                             
     D QCMDEXC         PR                  EXTPGM('QCMDEXC')                                        
     D  cmdString                 32702    options(*varsize)                                        
     D                                     const                                                    
     D  cmdLen                       15p 5 CONST                                                    
      *                                                                                             
     D CLRPFM          S             21a   INZ('CLRPFM FILE(QCHKACTJ)')                             
      *                                                                                             
      /free                                                                                         
                                                                                                    
          monitor;                                                                                  
               QCMDEXC(CLRPFM:%len(CLRPFM)); 
          on-error;                                                                                 
               if (CPFMSG <> *BLANKS);                                                              
                select ;                                                                            
                when (CPFMSG = 'CPF3142');                                                          
                  dsply 'NOT EXIST';                                                                
                when (CPFMSG = 'CPF3156');                                                          
                  dsply 'IN USE';                                                                   
                other;                                                                              
                  dsply ('error ' + CPFMSG);                                                        
                endsl;                                                                              
                endif;                                                                              
          endmon;                        
                                         
              *inLR = *on ;                                                                         
              return ;                                                                              
                                                                                                    
      /end-free

同じように実行してみたのが以下の画面ショットです。

エラーメッセージの出方がちょっと変わっていますね。

インフォメーションセンターを参照してみると (V6R1 でも) 以下のように実行できるコマンドストリングの長さは 1〜 32702 の間となっています。

Length of source command string
INPUT; BINARY(4)

The length of the source command string. Valid values are between 1 and 32 702.

http://publib.boulder.ibm.com/infocenter/systems/scope/i5os/index.jsp?topic=/apis/qcmdexc.htm

[Top Pageに戻る]

Ads by TOK2