COBOLでCGI

COBOL言語で、CGI開発をしてみましょう。

《0》お読み頂く前に

【Linuxでの準備】
《1》OpenCOBOLのインストール
《2》Apacheの設定

【COBOLCGIを作るには】
《3》CGIのためのコードを書いてみましょう
《4》CGIとして実行してみましょう

【その他】
他言語との連係
参考サイト

《0》お読み頂く前に (前提としていること)

このドキュメントは、COBOL言語でCGI開発することを目的としています。

Linux上にて、Apache(version 1.3)がインストールされていること、
また使用するCOBOLのコンパイルは、
OpenCOBOL(version 0.12)であることを前提としています。

《1》OpenCOBOLのインストール

http://www.open-cobol.org/
より、open-cobol-0.12.tar.gz をダウンロードします。

解凍→インストールの手順は以下の通りです。


$ tar zxvf open-cobol-0.12.tar.gz
$ cd open-cobol-0.12/
$ ./configure
$ make
$ make check
$ make install


問題がなければ普通にインストールされます。
詳しくは上記のURLの、Installation Guideにて、説明があります。

インストール後、このドキュメントで使用するアプリケーションは、
[cobc]というCOBOLコンパイラです。
念のため、バージョンを確かめてみましょう。


$ cobc --version
cobc (OpenCOBOL) 0.12
Copyright (C) 2001-2003 Keisuke Nishida


オプションの説明は、 


$ cobc --help


で表示されます。
ここまで問題なければ、次のステップに続きます。

《2》Apacheの設定

Apacheで、CGIが使えるようにしておきます。

【1】
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
# /cgi-bin/以下のフォルダに置かれたものをCGIスクリプトとする

もしくは、

【2】
AddHandler cgi-script .cgi
# 拡張子、.cgiとつくものを、CGIスクリプトとして実行する。

このドキュメントは、
Apacheの説明ではなく、COBOLでのCGI開発のためのドキュメントなので、
Apacheに関しては以上で終らせて頂きます。
これ以上の詳しい説明は
http://www.apache.jp/
などを参照するといいでしょう。

《3》CGIのためのコードを書いてみましょう

では、CGIのためのCOBOLコードを書いてみましょう。
このドキュメントでは余分な機能を省いて、HELLO WORLD!!と表示するだけにとどめておきます。
名前は、とりあえずLESSON.CBLとしておきましょう。

(LESSON.CBL Sample!)
DISPLAYでHTMLタグ等を出力している以外は、
普通のCOBOLコードですね。

            DISPLAY 'Content-type: text/html'.

は、このプログラムをHTMLと認識させるために必要なヘッダです。
この部分で、「このプログラムはHTMLを出力します」と宣言しています。
注意するべきことは、
ヘッダを宣言した後は、2回程改行しなければならないことです。
ですので上記の宣言の後に、DISPLAY ''.と、改行のみの行を追加しています。

HTMLタグについては、
以下のサイトを参考にすると良いでしょう。
http://www.doraneko.org/webauth/html32/html32.html

では次に、このCOBOLソースをコンパイルしてみましょう。

$cobc -main LESSON.CBL

LESSONという実行ファイルが生成されたはずです。
ではその実行ファイルを実行してみましょう。


$ ./LESSON
Content-type: text/html

<HTML>
<HEAD>
<TITLE>COBOLCGI</TITLE>
</HEAD>
<BODY>
HELLO WORLD!!
</BODY>
</HTML>


上のような出力結果になりましたでしょうか?
おお、なった!と思って慌てないでくださいね。CGIとして動作させるのは、まだこれからです。
ではこの実行ファイルを、ユーザーディレクトリ、public_html以下にコピーしましょう。
(※Apacheの設定では、ユーザーディレクトリがpublic_html以外の場合があります。)

$ cp ./LESSON ~/public_html/

《4》CGIとして実行してみましょう

さぁ、それでは、LESSONにブラウザでアクセスしてみましょう。

http://127.0.0.1/~あなたのユーザー名/LESSON
(LESSON Sample!)

どうでしょうか?わけの分からない文字がずらーっと並んでないでしょうか?
もしくはDOWNLOADがはじまってしまう?
いやいや怒らないでください、
実はこれ、実行ファイルLESSONが、Apacheにて、CGIと認識されていないため、
こうなってしまうのです。

ではLESSONをどうやってCGIと認識させれば良いでしょうか?
それはApacheの設定によって違います。
Apacheの設定に戻って覗いてみましょう…。

【1】で設定している場合 → cgi-bin/以下にLESSONを置く。

$ mv ~/public_html/LESSON ~/public_html/cgi-bin/
(URLは、http://127.0.0.1/~あなたのユーザー名/cgi-bin/LESSON)

【2】で設定している場合 → 拡張子を.cgiにする。

$ mv ./LESSON ./LESSON.cgi
(URLは、http://127.0.0.1/~あなたのユーザー名/LESSON.cgi)


(LESSON.cgi Sample!)
それではブラウザでもう一度アクセスしてみましょう。

HELLO WORLD!!

表示されましたか?
これでCOBOLCGIができるようになりました。
どうでしょうか、夢が広がりませんか?
では、よいCOBOLライフを!

他言語との連係

COBOLの実行ファイルを、
他のCGI言語と組み合わせれば、ApacheにCGIと認識させなくても
動作させることができます。

例:Perlと連係

名前はlessonperl.cgiとします。
Perl既存の、system関数にて、Linuxのコマンドとして実行しています。
この場合、lessonperl.cgiにアクセスすると、HELLO WORLD!!が表示されます。

(※#!/usr/bin/perlの部分は、環境に合わせて変えてください。)

参考サイト

以下のサイトにて、
COBOLCGIの非常に有意義なサンプル、解説などが存在します。
COBOLCGIを作るにあたって、それは大変な助けになるでしょう。

http://www.coboler.com/
http://www.ae.wakwak.com/~minen/cobol/
http://ww22.tiki.ne.jp/~hitoshik/webif.html

※サイトの管理人様方、
無断リンク失礼致しますが、問題があった場合は下記のメールアドレスまで御連絡ください。

LinkFree & UnLinkFree
[チョコCGI研究部]
2003.03.23(C)Kayoko