C言語でもユーザー・スペースなどを毎回上書きで作成していると
置き換えられたオブジェクト QUSLRCD タイプ *USRSPC は QRPLOBJ に移動され ました。 置き換えられたオブジェクト QUSLFLD タイプ *USRSPC は QRPLOBJ に移動され ました。
のようにメッセージが残ってみっともない。
_
ユーザー・スペースは存在していればAPIで自動的に上書きされるので
毎回、作成する必要はない。
C言語の中でも CHKOBJで存在をチェックして無いときにだけ作成するようにしたい。
それにはC言語の中でも次のようにして CHKOBJを使うことができる。
#define ERROR 1
:
if(system("CHKOBJ QTEMP/QUSLRCD OBJTYPE(*USRSPC)") == ERROR){/*NOT FOUND */
QUSCRTUS("QUSLRCD QTEMP ", "PF ", 1000,
"0", "*ALL ", "QUSLRCD ユーザー・スペース ", "*YES ",
(char *)(&errcode));/* create user space at QTEMP )*/
}/*NOT FOUND */
[解説]
C言語の中で systemコマンドで CHKOBJを使うとオブジェクトが見つからない場合は
systemの実行結果として 1が戻り、オブジェクトかべ見つかった場合は 0が戻る。
それを利用して上記のように C言語の中で CHKOBJでオブジェクトの存在を
チェックすることができる。
もちろん見つからなかった場合は次のように
QMHRCVPGM (=RCVMSG)で見つからなかったメッセージを
消しておくことが望まれる。
if(system("CHKOBJ QTEMP/QUSLRCD OBJTYPE(*USRSPC)") == ERROR){/*NOT FOUND */
memset(&rcvm0200, 0, sizeof(rcvm0200));
/*( 見つからないメッセージを削除する )*/
QMHRCVPM(&rcvm0200, msg_data_len, "RCVM0200", "* ", 0,
"*LAST ", msgkey, wait_time,"*REMOVE ", &errcode);
QUSCRTUS("QUSLRCD QTEMP ", "PF ", 1000,
"0", "*ALL ", "QUSLRCD ユーザー・スペース ", "*YES ",
(char *)(&errcode));/* create user space at QTEMP )*/
}/*NOT FOUND */
ソフトウェア製品で無駄なメッセージを出す必要もないしその分パフォーマンスも良くなる。
