Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


7.1.1 SUPの例

SUPのコーディング例を次に示します。

  10  /*
  20   * SUP01
  30   */
  40  #include <stdio.h>
  50  #include <string.h>
  60  #include <dcrpc.h>
  70  #include <dctrn.h>
  80  
  90  main()
 100  {
 110  /*
 120   *変数の定義
 130   */
 140    static char   in_buf[1024];
 150    static DCLONG in_buf_len;
 160    static char   out_buf[1024];
 170    static DCLONG out_buf_len;
 180    int rc;
 190  /*
 200   *RPC-OPEN(UAPの開始)
 210   */
 220    rc = dc_rpc_open(DCNOFLAGS);
 230    /*OpenTP1の各種関数を使う準備をする(各機能の初期化)*/
 240    if(rc != DC_OK) {
 250      printf("SUP01:dc_rpc_openに失敗しました。CODE = %d \n",rc);
 260      goto PROG_END;
 270    }
 280  /*
 290   *ADM-COMPLETE(ユーザサーバの開始処理完了の報告)
 300   */
 310    rc = dc_adm_complete(DCNOFLAGS);
 320    if(rc != DC_OK){
 330      printf("SUP01:dc_adm_completeに失敗しました。CODE = %d \n",rc);
 340      goto PROG_END;
 350    }
 360  /*
 370   *TRN_BEGIN(トランザクションの開始)
 380   */
 390    rc = dc_trn_begin();
 400    if(rc != DC_OK) {
 410      printf("SUP01:dc_trn_beginに失敗しました。CODE = %d \n",rc);
 420      goto TRAN_END;
 430    }
 440    /*
 450     *RPC-CALL(遠隔サービスの要求)
 460     */
 470    strcpy(in_buf,"SUP01:DATA OpenTP1!!");
 480    in_buf_len = strlen(in_buf) + 1;
 490    out_buf_len = 1024;
 500    rc = dc_rpc_call("spp01grp","svr01",in_buf,&in_buf_len,
 510    out_buf,&out_buf_len,DCNOFLAGS);
 520    if(rc != DC_OK) {
 530      printf("SUP01:サービス要求に失敗しました。CODE = %d \n",rc);
 540      goto TRAN_END;
 550    }
 560    printf("SUP01:SERVICE FUNCTION RETURN = %s\n",out_buf);
 570  /*
 580   *TRN-UNCHAINED-COMMIT(非連鎖モードのコミット)
 590   */
 600    TRAN_END:
 610    rc = dc_trn_unchained_commit();
 620    if(rc != DC_OK) {
 630      printf("SUP01:dc_trn_unchained_commitに失敗しました。CODE = %d \n",rc);
 640    }
 650  /*
 660   *RPC-CLOSE(UAPの終了)
 670   */
 680    PROG_END:
 690    dc_rpc_close(DCNOFLAGS);
 700    printf("SUP01:処理を終了しました。\n");
 710    exit(0);
 720  }