付録B ユーザコマンドのコーディング例

ユーザコマンドのコーディング例として,サーバ識別名をチェックしてCGMTを切り替える処理を,次に示します。ただし,このコーディング例は,HI-UX/WE2での例になっています。

/************************************************************/
/*  サーバ識別名をチェックして,CGMTを切り替える処理            */
/*  argv[2]:サーバ識別名         argv[5]:サーバ状態パラメタ   */
/*  argv[4]:サーバ種別           argv[6]:開始/終了パラメタ   */
/************************************************************/

#include    <stdio.h>
#define    KIND_ONL      "online"
#define    KIND_SBY      "standby"
#define    SERV_START    "-s"
#define    SERV_END      "-e"
#define    SERV_ABORT    "-a"
#define    STATUS_START  "start"
#define    STATUS_END    "end"
#define    TP1_11        "opentp11"
#define    TP1_12        "opentp12"
#define    CGMTCMD       "/etc/mtconnect "
#define    CGMT_FILE     "/dev/cgmt0 "
#define    CGMT_CONNECT  "-c"
#define    CGMT_DISCNNCT "-d"
#define    CGMT_RESET    "-c -r"
#define    CMD_ZERO      0
main(argc,argv)
int       argc;
char     *argv[];
{
    char    cgmt_cmd[40];
    if(strcmp(argv[2],TP1_11)==CMD_ZERO){

    /*-----------------------------------------------------*/
    /*  サーバ識別名 "opentp11" の状態変化                    */
    /*-----------------------------------------------------*/

       if(strcmp(argv[4],KIND_ONL) == CMD_ZERO){
    /*---サーバ種別 online ------------------------------------*/
          if((strcmp(argv[5],SERV_START) == CMD_ZERO) &&
             (strcmp(argv[6],STATUS_START) == CMD_ZERO)){

    /*-----------------------------------------------------*/
    /*  実行サーバ:opentp11の起動処理開始                     */
    /*  CGMTをアクセス可能にします。                           */
    /*-----------------------------------------------------*/

             memset(cgmt_cmd,NULL,40);
             strcpy(cgmt_cmd,CGMTCMD);
             strcat(cgmt_cmd,CGMT_FILE);
             strcat(cgmt_cmd,CGMT_CONNECT);
             system(cgmt_cmd);
             return;
          }else;
          if((strcmp(argv[5],SERV_ABORT) == CMD_ZERO) &&
             (strcmd(argv[6],STATUS_START) == CMD_ZERO)){

    /*-----------------------------------------------------*/
    /*  実行サーバ:opentp11のサーバ障害                       */
    /*  CGMTをアクセス不可能にします。                         */
    /*-----------------------------------------------------*/

             memset(cgmt_cmd,NULL,40);
             strcpy(cgmt_cmd,CGMTCMD);
             strcat(cgmt_cmd,CGMT_FILE);
             strcat(cgmt_cmd,CGMT_DISCNNCT);
             system(cgmt_cmd);
             return;
          }else;

            :
            :
            :
            :

      }   /*---実行サーバ処理終了-----------------------------*/
       else;
       if((strcmp(argv[4],KIND_SBY) == CMD_ZERO){

     /*---サーバ種別 standby -----------------------------------*/
          if((strcmp(argv[5],SERV_START) == CMD_ZERO) &&
             (strcmp(argv[6],STATUS_START) == CMD_ZERO)){


    /*-----------------------------------------------------*/
    /*  待機サーバ:opentp11の起動処理開始                     */
    /*  CGMTをアクセス不可能にします。                         */
    /*-----------------------------------------------------*/

             memset(cgmt_cmd,NULL,40);
             strcpy(cgmt_cmd,CGMTCMD);
             strcat(cgmt_cmd,CGMT_FILE);
             strcat(cgmt_cmd,CGMT_DISCNNCT);
             system(cgmt_cmd);
             return;
          }else;
          if((strcmp(argv[5],SERV_ABORT) == CMD_ZERO) &&
             (strcmd(argv[6],STATUS_START) == CMD_ZERO)){


    /*-----------------------------------------------------*/
    /*  実行サーバ:opentp11のサーバ障害                       */
    /*  待機サーバ:opentp11の系切り替え処理開始               */
    /*  CGMTをリセット後,アクセス可能にします。               */
    /*-----------------------------------------------------*/

             memset(cgmt_cmd,NULL,40);
             strcpy(cgmt_cmd,CGMTCMD);
             strcat(cgmt_cmd,CGMT_FILE);
             strcat(cgmt_cmd,CGMT_RESET);
             system(cgmt_cmd);
             return;
          }else;

            :
            :
            :
            :

       }   /*---待機サーバ処理終了-----------------------------*/
       else;

    }
    else;  /*---サーバ:opentp11処理終了-----------------------*/

    if(strcmp(argv[2],TP1_12) == CMD_ZERO){

    /*-----------------------------------------------------*/
    /*  サーバ識別名 "opentp12" の状態変化                     */
    /*-----------------------------------------------------*/

            :
            :
            :
            :
    }
    else;
}