Tools

23. 環境変数を更新する PUTENV コマンド

GETENV コマンドは環境変数を取得するコマンドであるのに対してPUTENV コマンドは、
その逆で任意の環境変数を更新する。
i5/OS には CHGENVVAR : 環境変数変更 があるが、これはその環境変数があらかじめ
存在していなければならない。
今回、紹介する PUTENVコマンドは、事前に環境変数が存在している必要はない。

【 CMD: 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(' 更新値 ')
【 C/400 : PUTENV 】
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 }