GETENV コマンドは環境変数を取得するコマンドであるのに対してPUTENV コマンド
は、
その逆で任意の環境変数を更新する。
i5/OS には CHGENVVAR : 環境変数変更
があるが、これはその環境変数があらかじめ
存在していなければならない。
今回、紹介する PUTENVコマンドは、事前に環境変数が存在している必要はない。
0001.00 CMD PROMPT(' 環境変数の更新 ') 0002.00 PARM KWD(ENV) TYPE(*CHAR) LEN(48) + 0003.00 PROMPT(' 環境変数 ') 0004.00 PARM KWD(VALUE) TYPE(*CHAR) LEN(256) + 0005.00 PROMPT(' 更新値 ')
0001.00 #include <stdio.h> 0002.00 #include <stdlib.h> 0003.00 #include <string.h> 0004.00 #include <micomput.h> /* triml */ 0005.00 0006.00 #define TRUE 0 0007.00 #define FALSE -1 0008.00 /********************************************************************/ 0009.00 /* m a i n --- main module of this pgm */ 0010.00 /* */ 0011.00 /* <PARAMETER> 1. ENV */ 0012.00 /* 2. VALUE */ 0013.00 /* */ 0014.00 /*------------------------------------------------------------------*/ 0015.00 0016.00 int main(int argc, char *argv[]){ 0017.00 char env[49], str[512]; 0018.00 char value[256]; 0019.00 int len; 0020.00 0021.00 memset(env, 0, sizeof(env)); 0022.00 memcpy(env, argv[1], 48); 0023.00 env[48] = 0x00; 0024.00 len = triml(env, ' '); 0025.00 if(len > 0) env[len] = 0x00; 0026.00 memset(value, 0, sizeof(value)); 0027.00 memcpy(value, argv[2], 256); 0028.00 value[256] = 0x00; 0029.00 len = triml(value, ' '); 0030.00 if(len > 0) value[len] = 0x00; 0031.00 memset(str, 0, sizeof(str)); 0032.00 sprintf(str, "%s=%s", env, value); 0033.00 putenv(str); 0034.00 exit(0); 0035.00 }