C400

83. system 関数の実行結果の検査

system 関数は C/400 からSystem i のコマンドを実行できる便利な関数である。

例えば、

system("DSPLIBL *PRINT");

によって DSPLIBL によるライブラリー・リストの印刷出力を実行することができる。

しかし、コマンドの結果を知りたい場合もある。

例えば CHKOBJ によって存在を検査してから次のコマンドを実行したいような場合である。

system 関数は正常に実行されたときは、戻り値として 0 を返すが

エラーがあったときは 1 を戻り値として返す。

これを応用したのが次の例である。

API : QCMDEXC を使用するよりは system 関数を使用したほうが、やさしくてわかりやすくなる。

【サンプル: TESTSYS】

QTEMP にファイル WORK が存在しているかどうかチェックして

存在していなければファイル WORK QTEMP に作成するプログラム

-------------------------------------------------------------------------------
001.00 #include <stdio.h>                                                
002.00 #include <stdlib.h>                                               
003.00 #include <string.h>                                               
004.00                                                                         
005.00 #define ERROR        1                                                  
006.00 void main(void){                                                        
007.00                                                                         
008.00    printf("** TESTSYS **\n");                                           
009.00    getchar();                                                           
010.00    if(system("CHKOBJ QTEMP/WORK *FILE") == ERROR){/* NOT-FOUND */       
011.00      system("CRTPF  QTEMP/WORK RCDLEN(120) LVLCHK(*NO) AUT(*ALL)");     
012.00    }/* NOT-FOUND */                                                     
013.00    getchar();                                                           
014.00 }                                                                       
-------------------------------------------------------------------------------