COBOL2002 ユーザーズガイド
HTMLの先頭部分を出力するサービスルーチンです。CBLHTMLBEGINサービスルーチンが出力する内容を,次に示します。
<HTML> <HEAD> <TITLE> 引数1 </TITLE> </HEAD> <BODY>
CALL 'CBLHTMLBEGIN' USING 引数1
DATA DIVISION. WORKING-STORAGE SECTION. 01 TITLE-NAME PIC X(128). PROCEDURE DIVISION. MOVE 'This my test title' TO TITLE-NAME. CALL 'CBLHTMLBEGIN' USING TITLE-NAME. CALL 'CBLHTMLEND'.
HTMLの終端部分を出力するサービスルーチンです。CBLHTMLENDサービスルーチンが出力する内容を,次に示します。
</BODY> </HTML>
CALL 'CBLHTMLEND'
引数に指定された文字列を出力するサービスルーチンです。
CALL 'CBLDISPLAYTEXT' USING 引数1
表27-5 CBLDISPLAYTEXTサービスルーチンのインタフェース領域
記述形式 | 内容 |
---|---|
01 データ名1. |
CALL文のUSINGで指定するインタフェース領域の名前。 |
02 データ名2 PIC S9(9) USAGE COMP. |
出力する文字列の長さを4バイトの2進項目で指定する。 |
02 データ名3. 03 PIC X OCCURS 1024 DEPENDING ON データ名2. |
出力する文字列を可変長英数字項目で指定する。最大1,024バイトまで指定できる。 |
DATA DIVISION. WORKING-STORAGE SECTION. 01 NAMEX. 02 NAME-LEN PIC S9(9) USAGE COMP. 02 NAME-STRING. 03 PIC X OCCURS 1024 DEPENDING ON NAME-LEN. PROCEDURE DIVISION. COMPUTE NAME-LEN = FUNCTION LENGTH('COBOL'). MOVE 'COBOL' TO NAME-STRING. CALL 'CBLDISPLAYTEXT' USING NAMEX.
引数に指定した文字列を,実体参照の形式に変換して出力するサービスルーチンです。
実体参照とは,HTML言語で予約されているため表示できない文字を,別の文字列を使って表す記法です。例えば,HTML言語では「<」「>」の文字が予約されているため,実体参照ではこれを「<」「>」と表します。
CALL 'CBLCONVERTTEXT' USING 引数1
表27-6 CBLCONVERTTEXTサービスルーチンのインタフェース領域
記述形式 | 内容 |
---|---|
01 データ名1. |
CALL文のUSINGで指定するインタフェース領域の名前。 |
02 データ名2 PIC S9(9) USAGE COMP. |
変換して出力する文字列の長さを4バイトの2進項目で指定する。 |
02 データ名3. 03 PIC X OCCURS 1024 DEPENDING ON データ名2. |
変換して出力する文字列を可変長英数字項目で指定する。 最大1,024バイトまで指定できる。 |
DATA DIVISION. WORKING-STORAGE SECTION. 01 NAMEX. 02 NAME-LEN PIC S9(9) USAGE COMP. 02 NAME-STRING. 03 PIC X OCCURS 1024 DEPENDING ON NAME-LEN. 01 TEXT-STR PIC X(17) VALUE 'SHOW AN <OPTION>.'. PROCEDURE DIVISION. : COMPUTE NAME-LEN = FUNCTION LENGTH (TEXT-STR). MOVE TEXT-STR TO NAME-STRING. CALL 'CBLCONVERTTEXT' USING NAMEX.
SHOW AN <O PTION>.
CGI環境変数の名前と現在の値を,HTML形式で出力するサービスルーチンです。
出力される環境変数の種類については,「27.4 CGI環境変数へのアクセス」を参照してください。
CALL 'CBLPRINTENV'
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. PROCEDURE DIVISION. CALL 'CBLCGIINIT' USING INPUTLIST. CALL 'CBLPRINTENV'. : CALL 'CBLDESTROYLIST' USING INPUTLIST.
<HTML> <BODY> <H3> Environment variable list: </H3> AUTH_TYPE= (NULL) <BR> CONTENT_LENGTH= 0 <BR> CONTENT_TYPE= (NULL) <BR> GATEWAY_INTERFACE= CGI/1.1 <BR> : : </BODY> </HTML>
環境変数の値を取得するサービスルーチンです。
CALL 'CBLGETENV' USING 引数1 引数2
表27-7 CBLGETENVサービスルーチンのインタフェース領域
記述形式 | 内容 |
---|---|
01 データ名1. |
CALL文のUSINGで指定するインタフェース領域の名前。 |
02 データ名2 PIC S9(9) USAGE COMP. |
取得した環境変数の値(文字列)の長さを格納する領域で,4バイトの2進項目で指定する。 |
02 データ名3. 03 PIC X OCCURS 1024 DEPENDING ON データ名2. |
取得した環境変数の値を格納する領域で,最大1,024バイトの可変長集団項目を指定する。 |
DATA DIVISION. WORKING-STORAGE SECTION. 01 NAMEX PIC X(28) VALUE 'REMOTE_HOST'. 01 VALUEX. 02 VALUE-LEN PIC S9(9) USAGE COMP. 02 VALUE-STRING. 03 PIC X OCCURS 1024 DEPENDING ON VALUE-LEN. PROCEDURE DIVISION. CALL 'CBLGETENV' USING NAMEX VALUEX. IF RETURN-CODE = 0 THEN DISPLAY 'THE CLIENT MACHINE IS ' VALUE-STRING ELSE DISPLAY 'ERROR' END-IF.
フォーム情報からCGIリストを作成し,リストのアドレスを取得するサービスルーチンです。フォーム情報がPOSTメソッド(標準出力経由),GETメソッド(環境変数経由)のどちらから転送されても,CGIリストを作成できます。
また,-TDInfオプションを指定してコンパイルしたCGIプログラムでCBLCGIINITサービスルーチンが呼び出されると,CGI用環境変数の値をCGI環境ファイル(実行可能ファイル名.env)として,CGIプログラムと同じフォルダに出力します。
CALL 'CBLCGIINIT' USING 引数1
名前 | 値 |
---|---|
NAME1 | 1,024バイト |
NAME1 | 1,024バイト |
NAME1 | 952バイト |
CBLCGIINITSIZE=最大文字列長
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. PROCEDURE DIVISION. CALL 'CBLCGIINIT' USING INPUTLIST. : CALL 'CBLDESTROYLIST' USING INPUTLIST.
新たにCGIリストを作成し,リストのアドレスを取得するサービスルーチンです。
CALL 'CBLCREATELIST' USING 引数1
DATA DIVISION. WORKING-STORAGE SECTION. 01 NAMELIST USAGE ADDRESS VALUE NULL. PROCEDURE DIVISION. CALL 'CBLCREATELIST' USING NAMELIST. : CALL 'CBLDESTROYLIST' USING NAMELIST.
CGIリストを削除して,領域を解放するサービスルーチンです。
CALL 'CBLDESTROYLIST' USING 引数1
指定したCGIリストの最後に,「名前」と「値」の対を追加するサービスルーチンです。
CALL 'CBLADDPAIR' USING 引数1 引数2 引数3
表27-8 CBLADDPAIRサービスルーチンのインタフェース領域
記述形式 | 内容 |
---|---|
01 データ名1. |
CALL文のUSINGで指定するインタフェース領域の名前。 |
02 データ名2 PIC S9(9) USAGE COMP. |
CGIリストに追加する「値」の長さを格納する領域で,4バイトの2進項目で指定する。 |
02 データ名3. 03 PIC X OCCURS 1024 DEPENDING ON データ名2. |
CGIリストに追加する「値」を格納する領域で,最大1,024バイトの可変長集団項目を指定する。 |
DATA DIVISION. WORKING-STORAGE SECTION. 01 NAMELIST USAGE ADDRESS VALUE NULL. 01 VALUEX. 02 VALUE-LEN PIC S9(9) USAGE COMP. 02 VALUE-STRING. 03 PIC X OCCURS 1024 DEPENDING ON VALUE-LEN. 01 NAMEX PIC X(28) VALUE 'Hitachi'. 01 NAMEX-VALUE PIC X(9) VALUE 'COBOL2002'. PROCEDURE DIVISION. CALL 'CBLCREATELIST' USING NAMELIST. COMPUTE VALUE-LEN = FUNCTION LENGTH(NAMEX-VALUE). MOVE NAMEX-VALUE TO VALUE-STRING. CALL 'CBLADDPAIR' USING NAMELIST NAMEX VALUEX. CALL 'CBLDESTROYLIST' USING NAMELIST.
指定したCGIリストの現在のポイント位置から,「名前」と「値」の対を削除するサービスルーチンです。
CALL 'CBLDELETEPAIR' USING 引数1
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. 01 NAMEX PIC X(28) VALUE 'COBOL'. 01 VALUEX. 02 VALUE-LEN PIC S9(9) USAGE COMP. 02 VALUE-STRING. 03 PIC X OCCURS 1024 DEPENDING ON VALUE-LEN. PROCEDURE DIVISION. CALL 'CBLCGIINIT' USING INPUTLIST. CALL 'CBLFINDPAIR' USING INPUTLIST NAMEX VALUEX. CALL 'CBLDELETEPAIR' USING INPUTLIST. CALL 'CBLDESTROYLIST' USING INPUTLIST.
指定したCGIリストの先頭のポイント位置から「名前」を検索し,「名前」に対応する「値」を取得するサービスルーチンです。また,一致した「名前」にポイント位置を移動します。
CALL 'CBLFINDPAIR' USING 引数1 引数2 引数3
表27-9 CBLFINDPAIRサービスルーチンのインタフェース領域
記述形式 | 内容 |
---|---|
01 データ名1. |
CALL文のUSINGで指定するインタフェース領域の名前。 |
02 データ名2 PIC S9(9) USAGE COMP. |
検索した「名前」に対応する「値」の長さが格納される領域。4バイトの2進項目を指定する。 |
02 データ名3. 03 PIC X OCCURS 1024 DEPENDING ON データ名2. |
検索した「名前」に対応する「値」が格納される領域。 最大1,024バイトの可変長集団項目を指定する。 |
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. 01 NAMEX PIC X(28) VALUE 'Hitachi'. 01 VALUEX. 02 VALUE-LEN PIC S9(9) USAGE COMP. 02 VALUE-STRING. 03 PIC X OCCURS 1024 DEPENDING ON VALUE-LEN. PROCEDURE DIVISION. CALL 'CBLCGIINIT' USING INPUTLIST. CALL 'CBLFINDPAIR' USING INPUTLIST NAMEX VALUEX. CALL 'CBLDISPLAYTEXT' USING VALUEX. CALL 'CBLDESTROYLIST' USING INPUTLIST.
指定したCGIリストの,次のポイント位置から「名前」を検索し,「名前」に対応する「値」を取得するサービスルーチンです。また,一致した「名前」にポイント位置を移動します。
CALL 'CBLFINDNEXTPAIR' USING 引数1 引数2 引数3
表27-10 CBLFINDNEXTPAIRサービスルーチンのインタフェース領域
記述形式 | 内容 |
---|---|
01 データ名1. |
CALL文のUSINGで指定するインタフェース領域の名前。 |
02 データ名2 PIC S9(9) USAGE COMP. |
検索した「名前」に対応する「値」の長さが格納される領域。4バイトの2進項目を指定する。 |
02 データ名3. 03 PIC X OCCURS 1024 DEPENDING ON データ名2. |
検索した「名前」に対応する「値」が格納される領域。 最大1,024バイトの可変長集団項目を指定する。 |
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. 01 NAMEX PIC X(28) VALUE 'Hitachi'. 01 VALUEX. 02 VALUE-LEN PIC S9(9) USAGE COMP. 02 VALUE-STRING. 03 PIC X OCCURS 1024 DEPENDING ON VALUE-LEN. PROCEDURE DIVISION. CALL 'CBLCGIINIT' USING INPUTLIST. CALL 'CBLFINDPAIR' USING INPUTLIST NAMEX VALUEX. CALL 'CBLDISPLAYTEXT' USING VALUEX. CALL 'CBLFINDNEXTPAIR' USING INPUTLIST NAMEX VALUEX. CALL 'CBLDISPLAYTEXT' USING VALUEX. CALL 'CBLDESTROYLIST' USING INPUTLIST.
指定したCGIリストの現在のポイント位置から「名前」と「値」の対を取得するサービスルーチンです。ポイント位置は移動しません。
CALL 'CBLGETPAIR' USING 引数1 引数2 引数3
表27-11 CBLGETPAIRサービスルーチンのインタフェース領域
記述形式 | 内容 |
---|---|
01 データ名1. |
CALL文のUSINGで指定するインタフェース領域の名前。 |
02 データ名2 PIC S9(9) USAGE COMP. |
「値」の長さが格納される領域。4バイトの2進項目を指定する。 |
02 データ名3. 03 PIC X OCCURS 1024 DEPENDING ON データ名2. |
「値」が格納される領域。最大1,024バイトの可変長集団項目を指定する。 |
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. 01 NAMEX PIC X(28). 01 VALUEX. 02 VALUE-LEN PIC S9(9) USAGE COMP. 02 VALUE-STRING. 03 PIC X OCCURS 1024 DEPENDING ON VALUE-LEN. PROCEDURE DIVISION. CALL 'CBLCGIINIT' USING INPUTLIST. CALL 'CBLGETPAIR' USING INPUTLIST NAMEX VALUEX. DISPLAY 'NAME = ' NAMEX. CALL 'CBLDESTROYLIST' USING INPUTLIST.
指定したCGIリストの現在のポイント位置から「名前」と「値」の対を取得するサービスルーチンです。また,ポイント位置を次に移動します。
CALL 'CBLGETPAIRNEXT' USING 引数1 引数2 引数3
表27-12 CBLGETPAIRNEXTサービスルーチンのインタフェース領域
記述形式 | 内容 |
---|---|
01 データ名1. |
CALL文のUSINGで指定するインタフェース領域の名前。 |
02 データ名2 PIC S9(9) USAGE COMP. |
「値」の長さが格納される領域。4バイトの2進項目を指定する。 |
02 データ名3. 03 PIC X OCCURS 1024 DEPENDING ON データ名2. |
「値」が格納される領域。最大1,024バイトの可変長集団項目を指定する。 |
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. 01 NAMEX PIC X(28). 01 VALUEX. 02 VALUE-LEN PIC S9(9) USAGE COMP. 02 VALUE-STRING. 03 PIC X OCCURS 1024 DEPENDING ON VALUE-LEN. PROCEDURE DIVISION. CALL 'CBLCGIINIT' USING INPUTLIST. CALL 'CBLGETPAIRNEXT' USING INPUTLIST NAMEX VALUEX. DISPLAY ' NAME = ' NAMEX. CALL 'CBLGETPAIRNEXT' USING INPUTLIST NAMEX VALUEX. DISPLAY ' NAME = ' NAMEX. CALL 'CBLDESTROYLIST' USING INPUTLIST.
指定したCGIリスト中の「名前」と「値」の対の数を取得するサービスルーチンです。
CALL 'CBLLISTCOUNT' USING 引数1 引数2
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. 01 LIST-COUNT PIC S9(9) USAGE COMP. PROCEDURE DIVISION. CALL 'CBLCGIINIT' USING INPUTLIST. CALL 'CBLLISTCOUNT' USING INPUTLIST LIST-COUNT. IF RETURN-CODE = 0 THEN DISPLAY 'LIST COUNT : ' LIST-COUNT END-IF. : CALL 'CBLDESTROYLIST' USING INPUTLIST.
CGIリストにHTML拡張言語のREPEATで終端を認識する終端インジケータを追加するサービスルーチンです。終端インジケータは,特殊な名前と値(.REPEAT.TERMINATOR,1)で構成されています。
本サービスルーチンは,CGIリストの途中で%REPEAT%文を打ち切りたい場合などに使用します。
CALL 'CBLENDREPEAT' USING 引数1
DATA DIVISION. WORKING-STORAGE SECTION. 01 NAMELIST USAGE ADDRESS VALUE NULL. : PROCEDURE DIVISION. CALL 'CBLCREATELIST' USING NAMELIST. MOVE 'CITY' TO NAMEX. COMPUTE VALUE-LEN = FUNCTION LENGTH ('TOKYO'). MOVE 'TOKYO' TO VALUE-STRING. CALL 'CBLADDPAIR' USING NAMELIST NAMEX VALUEX. CALL 'CBLENDREPEAT' USING NAMELIST. COMPUTE VALUE-LEN = FUNCTION LENGTH ('FUKUOKA'). MOVE 'FUKUOKA' TO VALUE-STRING. CALL 'CBLADDPAIR' USING NAMELIST NAMEX VALUEX. CALL 'CBLENDREPEAT' USING NAMELIST. : CALL 'CBLDESTROYLIST' USING NAMELIST.
CBLFILLTEMPLATEサービスルーチンは,HTMLテンプレートをインタプリットするサービスルーチンです。また,HTMLテンプレートからあらかじめ生成したDLLファイルを,実行時に呼び出せます。ただし,DLLファイルはstdcall属性で作成しておかなければなりません。HTMLテンプレートについては,「27.6 HTMLテンプレート機能」を参照してください。
CALL 'CBLFILLTEMPLATE' USING 引数1 引数2
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. 01 TMPLT-NAME PIC X(256) VALUE 'HITACHI.htm'. PROCEDURE DIVISION. CALL 'CBLCGIINIT' USING INPUTLIST. CALL 'CBLFILLTEMPLATE' USING TMPLT-NAME INPUTLIST. : CALL 'CBLDESTROYLIST' USING INPUTLIST.
指定したCGIリストの内容を,HTML形式で出力するサービスルーチンです。
CALL 'CBLPRINTLIST' USING 引数1
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. PROCEDURE DIVISION. CALL 'CBLCGIINIT' USING INPUTLIST. CALL 'CBLPRINTLIST' USING INPUTLIST. : CALL 'CBLDESTROYLIST' USING INPUTLIST.
<HTML> <BODY> <H3> CGI list: </H3> <DL> <DT> name1 <DD> option1 <DT> name2 <DD> option2 </DL> </BODY> </HTML>
HTML形式でエラーメッセージを出力するサービスルーチンです。
CALL 'CBLSENDERROR' USING 引数1
DATA DIVISION. WORKING-STORAGE SECTION. 01 ERROR-MESSAGE PIC X(256) VALUE 'ERROR STRING.'. PROCEDURE DIVISION. : CALL 'CBLSENDERROR' USING ERROR-MESSAGE.
<HTML> <HEAD> <TITLE>Error Message </TITLE> </HEAD> <BODY> <BR> <H2>!! Error Message from COBOL CGI program !!</H2> <H3> ERROR STRING. </H3> </BODY> </HTML>
CGIプログラムの作成を支援するサービスルーチンの呼び出しをトレースするサービスルーチンです。また,CGI環境変数の値も取得します。トレース情報や環境変数の情報は,トレースファイル(実行可能ファイル名.trc)に出力されます。
トレース情報には,呼び出したサービスルーチンの名称と引数情報が出力されます。例えば,CBLCGIINITでは,CGIリストのアドレスが引数情報になります。
CALL 'CBLCGITRACE'
サービスルーチン | 出力されるトレース情報 |
---|---|
CBLHTMLBEGIN | <! CBLHTMLBEGIN(); Title = "文字列" > |
CBLHTMLEND | <! CBLHTMLEND(); > |
CBLDISPLAYTEXT | 出力されない。 |
CBLCONVERTTEXT | <! CBLCONVERTTEXT(); input string = "文字列" > |
CBLPRINTENV | 出力されない。 |
CBLGETENV | <! CBLGETENV(); name = "環境変数名", value = "環境変数の値" > |
CBLCGIINIT |
|
|
|
CBLCREATELIST |
|
|
|
CBLDESTROYLIST | <! CBLDESTROYLIST(); list = " CGIリストのアドレス" > |
CBLADDPAIR | <! CBLADDPAIR(); list = " CGIリストのアドレス", name = "名前", value = "値" > |
CBLDELETEPAIR | <! CBLDELETEPAIR(); list = " CGIリストのアドレス" > |
CBLFINDPAIR |
|
|
|
CBLFINDNEXTPAIR |
|
|
|
CBLGETPAIR |
|
|
|
CBLGETPAIRNEXT |
|
|
|
CBLLISTCOUNT | <! CBLLISTCOUNT(); list = " CGIリストのアドレス", count = "名前/値の数" > |
CBLENDREPEAT | <! CBLENDREPEAT(); list = " CGIリストのアドレス" > |
CBLFILLTEMPLATE | <! CBLFILLTEMPLATE(); list = " CGIリストのアドレス", filename = 'テンプレート名' > |
CBLPRINTLIST | 出力されない。 |
CBLSENDERROR | 出力されない。 |
CBLCGITRACE | <! CBLCGITRACE(); YYYY-MM-DD (HH:MM:SS) > YYYY-MM-DDは年-月-日,HH:MM:SSは時:分:秒を示す。 |
DATA DIVISION. WORKING-STORAGE SECTION. 01 INPUTLIST USAGE ADDRESS VALUE NULL. 01 NAMEX PIC X(28) VALUE 'COBOL'. 01 VALUEX. 02 VALUE-LEN PIC S9(9) USAGE COMP. 02 VALUE-STRING. 03 PIC X OCCURS 1024 DEPENDING ON VALUE-LEN. PROCEDURE DIVISION. CALL 'CBLCGITRACE'. CALL 'CBLCGIINIT' USING INPUTLIST. CALL 'CBLPRINTENV'. CALL 'CBLFINDPAIR' USING INPUTLIST NAMEX VALUEX. : CALL 'CBLDESTROYLIST' USING INPUTLIST.
<! CBLCGITRACE();YYYY-MM-DD (HH:MM:SS)> <! **** CGI ENVIRONMENT VARIABLES ***> AUTH_TYPE= (null) CONTENT_LENGTH= 0 : <! **** END OF CGI ENVIRONMENT VARIABLES ***> <! CBLCGIINIT();list = 0x890980 > :
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.