表示印刷サービスの起動でコネクションと論理端末を確立して初期画面を表示するための環境作成について説明します。
表示印刷サービスを起動すると同時にXMAP3 Server側でAPを実行できます。この場合は,XMAP3 Serverサービス名ファイルのAPパス名称で,実行するAPを定義します。このXMAP3の機能を利用して,該当する表示印刷サービスに対応するコネクション確立の運用コマンドを発行するようにします。
なお,XMAP3サーバの環境定義ファイルおよびXMAP3 Serverのサービス名ファイルに指定するサービス起動時に受け渡す環境変数名には,表示サービスと印刷サービスで別の環境変数名を指定してください。
XMAP3 Serverサービス名ファイルに指定した環境変数から起動されたサービスを求めて,SYSTEMサブルーチンで対応するコネクションに運用コマンド(mcftactcn)を発行するプログラムを作成します。
XMAP3 Serverサービス名ファイルのAPホスト名称,APパス名称,および環境変数名を,該当するサービスの内容に合わせて設定します。
APホスト名称には,OpenTP1システムのホスト名称を指定します。
APパス名称には,TP1/NET/XMAP3の運用コマンドを発行するプログラムの完全パス名称を指定します。
環境変数名には,TP1/NET/XMAP3の運用コマンドを発行プログラムで起動されたサービスを求めるために指定した環境変数を指定します。
TP1/NET/XMAP3プロトコル固有定義に必ず設定しなければならない項目を次に示します。
初期画面の表示は,論理端末定義(mcftalcle -p)のinitmapオペランドを指定して初期画面を表示する方式か,VOPNEVTの発生によって起動したアプリケーションで初期画面を表示する方式のどちらかで行ないます。
運用コマンドを発行するプログラムとXMAP3 Serverサービス名ファイルの例を示します。
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
main ()
{
char dsp[512];
char onlinecom[512];
/* サービス名 コネクション名 */
static char svname[6][11] = {"XPPDSP1","XPNCN5",
/*コネクション名はmcftalccn */
"XPPPRT1","XPNCN6",
/*定義コマンドで指定する*/
"XPPDSP2","XPNCN7"};
/*コネクションID*/
※2
struct mcfcmd {
char mcfid[32];
char svid[32];
char prgid[8];
char cnname[32];
char cnflg[8];
}mcfcmd_txt;
int svno = 6;
int rtycnt = 6; /* コネクション確立処理のリトライ回数 */
int tblp = 0;
int loopc = 0;
int eflag = 1;
FILE *fp;
※3
strcpy(dsp,getenv("XPPDSP"));
while ((eflag != 0) && (loopc < svno)) {
tblp = loopc;
eflag = strcmp(dsp,svname[tblp]);
loopc= loopc+2;
}
if (eflag == 0) {
sprintf(onlinecom,"/BeTRAN/bin/mcftdctcn -s 01 -f -c %s",
svname[++tblp]);
system(onlinecom); ※4
}
eflag = 1;
while ( (eflag != 0) && ( rtycnt > 0) ) {
sprintf(onlinecom,"/BeTRAN/bin/mcftlscn -s 01 -c %s > /tmp/work1",
svname[tblp]); ※5
system(onlinecom);
sprintf(onlinecom," grep ""KFCA10361"" /tmp/work1 > /tmp/work2");
system(onlinecom);
fp = fopen("/tmp/work2","r");
fscanf(fp,"%s %s %s %s %s",mcfcmd_txt.mcfid,mcfcmd_txt.svid,
mcfcmd_txt.cnname,mcfcmd_txt.prgid,mcfcmd_txt.cnflg);
eflag = strcmp(mcfcmd_txt.cnflg,"DCT");
/* コネクション状態の確認 */
if (eflag == 0) {
sprintf(onlinecom,"/BeTRAN/bin/mcftactcn -s 01 -c %s",
svname[tblp]);
system(onlinecom); ※6
}
sleep(10);
rtycnt--;
}
}
#サービス名称;サービスタイプ;利用者プロトコル;ホスト名称;デバイス名称;APホスト名称;APパス名称;環境変数名;
XPPDSP1;DSP;TCP;h3020A;XPPDSP1;h3050A;/BeTRAN/usr/bin/actcn_dsp;XPPDSP; ※1
XPPPRT1;PRT;TCP;FLORA1;XPPPRT1;h3050A;/BeTRAN/usr/bin/actcn_prt;XPPPRT; ※1
XPPDSP2;DSP;TCP;FLORA2;XPPDSP2;h3050A;/BeTRAN/usr/bin/actcn_dsp;XPPDSP; ※1