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 }