system
関数は C/400 からSystem i のコマンドを実行できる便利な関数である。
例えば、
system("DSPLIBL *PRINT");
によって DSPLIBL
によるライブラリー・リストの印刷出力を実行することができる。
しかし、コマンドの結果を知りたい場合もある。
例えば CHKOBJ
によって存在を検査してから次のコマンドを実行したいような場合である。
system 関数は正常に実行されたときは、戻り値として 0
を返すが
エラーがあったときは 1
を戻り値として返す。
これを応用したのが次の例である。
API : QCMDEXC
を使用するよりは system
関数を使用したほうが、やさしくてわかりやすくなる。
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 } -------------------------------------------------------------------------------