COBOL GでCGIを作成する方法

ASPのWWWサーバーには、COBOL GでCGIを作成するためのCGIサブルーチンが付属しています。

CGI作成の詳細は、以下のマニュアルを参照してください。

WWWサーバ説明書

  • 第2部 WWWサーバ/EX編
    • 第4章 環境定義
      • 4.3 CGIスクリプ
  • 第4部 CGIサブルーチン編

以下、COBOL GのCGIサンプルです。

初心者様向けの「COBOL教育サービス」始めました。

SAMPLE.CGIDEMO(COBOL G ソース)

000010****************************************************************
000020* (株)コンピュータ・サービス                                 *
000030* COBOL G CGIサンプル                               *
000040*                                                              *
000050* SYSTEM                                                       *
000060* SUB SYSTEM                                                   *
000070* PROGRAM                                                      *
000080* CREATE                                                       *
000090* MODIFY                                                       *
000100*                                                              *
000110****************************************************************
000120 IDENTIFICATION              DIVISION.
000130 PROGRAM-ID.                 SAMPLE01.
000140*
000150 ENVIRONMENT                 DIVISION.
000160 CONFIGURATION               SECTION.
000170 SPECIAL-NAMES.
000180*
000190 INPUT-OUTPUT                SECTION.
000200 FILE-CONTROL.
000210*
000220 DATA                        DIVISION.
000230*
000240 FILE                        SECTION.
000250*
000260 WORKING-STORAGE             SECTION.
000270*
000280     COPY XHTOCCBW.  *> CGIサブルーチン作業域
000290*
000300 LINKAGE                     SECTION.
000310*
000320*  COBOLの起動パラメタで受け渡される入力用ACM名および出力用ACM名
000330 01  ACM-NAME.
000340     02  ACM-NAME-READ           PIC  X(08).
000350     02  ACM-NAME-WRITE          PIC  X(08).
000360*
000370****************************************************************
000380 PROCEDURE                   DIVISION  USING ACM-NAME.
000390****************************************************************
000400*
000410 SAMPLE01-START.
000420*
000430*  CGIサブルーチン作業領域の初期化
000440     MOVE    LOW-VALUE           TO      COBW3.
000450*
000460*  CGIサブルーチン作業領域の設定およびCGIパラメータの獲得
000470     MOVE    ACM-NAME-READ       TO      COBW3-ACM-INPUT.
000480     MOVE    ACM-NAME-WRITE      TO      COBW3-ACM-OUTPUT.
000490     MOVE    1024                TO      COBW3-ACM-INPUT-LENGTH.
000500     MOVE    1024                TO      COBW3-ACM-OUTPUT-LENGTH.
000510     CALL    "XHTOCINI"          USING   COBW3.
000520     IF      COBW3-STATUS NOT =  ZERO
000530         EXIT    PROGRAM.
000540*
000550*  ヘッダ情報の出力
000560     MOVE    COBW3-CONTENT-TYPE-HTML     TO      COBW3-CONTENT-TYPE.
000570     MOVE    COBW3-LOCATION-CODE-NONE    TO      COBW3-LOCATION.
000580     CALL    "XHTOCPHD"          USING   COBW3.
000590     IF      COBW3-STATUS NOT =  ZERO
000600         EXIT    PROGRAM.
000610*
000620*  HTML出力
000630     MOVE    "<HTML>"            TO      COBW3-PUT-STRING.
000640     MOVE    6                   TO      COBW3-PUT-STRING-LENGTH.
000650     CALL    "XHTOCPTX"          USING   COBW3.
000660     MOVE    "<HEAD></HEAD>"     TO      COBW3-PUT-STRING.
000670     MOVE    13                  TO      COBW3-PUT-STRING-LENGTH.
000680     CALL    "XHTOCPTX"          USING   COBW3.
000690     MOVE    "<BODY>"            TO      COBW3-PUT-STRING.
000700     MOVE    6                   TO      COBW3-PUT-STRING-LENGTH.
000710     CALL    "XHTOCPTX"          USING   COBW3.
000720     MOVE    "HELLO WORLD"       TO      COBW3-PUT-STRING.
000730     MOVE    11                  TO      COBW3-PUT-STRING-LENGTH.
000740     CALL    "XHTOCPTX"          USING   COBW3.
000750     MOVE    "</BODY>"           TO      COBW3-PUT-STRING.
000760     MOVE    7                   TO      COBW3-PUT-STRING-LENGTH.
000770     CALL    "XHTOCPTX"          USING   COBW3.
000780     MOVE    "</HTML>"           TO      COBW3-PUT-STRING.
000790     MOVE    7                   TO      COBW3-PUT-STRING-LENGTH.
000800     CALL    "XHTOCPTX"          USING   COBW3.
000810*
000820*  実行環境の開放
000830     CALL    "XHTOCFRE"          USING    COBW3.
000840*
000850 SAMPLE01-END.
000860*
000870     EXIT    PROGRAM.

翻訳は以下のコマンドで行います。

JB1 : COBOLG SRC-SAMPLE.CGIDEMO,STORE-@YES,OBJLIB-CGIDEMO,REP-@YE-
    : S,PUBAUT-@ALL,CPYLIB-XSLBSMPL 

CGIサブルーチンのインターフェイスとなる登録集XHTOCCBWはXSLBSMPLライブラリに格納されています。

次にCGIスクリプトを作成します。CGIスクリプトはCGIの動作環境を定義するファイルです。多階層ライブラリ(例:/var/httpd/cgi-bin)に格納します。

sample.cgi(CGIスクリプト)

#!-CGI-
cgi-pgm:SAMPLE.CGIDEMO
prof:XHTTP
cgi-input-code:jefascii
cgi-output-code:jefascii
server-input-code:sjis
server-output-code:sjis 

次に、WWWサーバーの環境定義フィル(例:/var/httpd/conf/httpd.conf)にCGIスクリプトの格納先の定義を追加します。

#CGIスクリプトの格納ディレクトリ
ScriptAlias /cgi-bin/ /var/httpd/cgi-bin/ 

追加した定義を有効にするためにWWWサーバーを再起動してください。

CGIを実行するには、プラウザから以下のURLへアクセスしてください。

http://<ホストのIPアドレス>/cgi-bin/sample.cgi
About コンピュータ・サービス 73 投稿
〒689-2103 鳥取県東伯郡北栄町田井183-1 TEL: 0858-48-3131

最初のコメントをする

コメントを残す

メールアドレスが公開されることはありません。


*