PandaでWEBプログラミング
このドキュメントは、Pandaにて
WEBで動作するプログラミングをすることを目的としています。
0★目次
1★お読みになるまえに
2★Pandaのインストール
2-1☆Pandaをインストールする前に必要なもの
2-2☆Pandaのインストール
3★サンプルデモを動かしてみる
3-1☆サンプルデモをmakeする
3-2☆必要なファイルの配置
3-3☆PATHを通しておく
3-4☆サンプルデモの起動
4★プログラムファイルの関係
5★プログラミングの仕方
5-1☆追加するプログラムの名前を決め、ディレクトリを作る
5-2☆sample1のMakefileに、demotestが追加されたことを記述
5-3☆ld、spa、recをそれぞれ用意
5-4☆COBOLファイル、仮のSCRAREA、を用意
5-5☆demotestのMakefileを用意
5-6☆一度makeする
5-7☆画面ファイル、htcを作る
5-8☆mon.cgiの修正
5-9☆もう一度make all
5-10☆demotestを起動
6★終
1★お読みになるまえに
このドキュメントは、以下のことを前提としています。
Linux上でApache(version 1.3)が動作しているものとする
OpenCOBOL(version 0.12)がインストールされており、正常に動作しているものとする
全てのミドルウェアはホームディレクトリにインストールされるものとする
***と記述されている部分は、各自のユーザー名とする
第5章でリンクされているサンプルコードは、拡張子を[.txt]とし、
使用する場合は各拡張子に変更することとする
閲覧しているブラウザ画面のサイズによっては、
命令やコードなど、意図しない場所で改行されている場合があるが、
実際に記述する場合には、その改行はないものとする
色の設定は次の通りとする。命令/コード/備考
また使用するソフトウェアのバージョンによっては、
若干違う動作をする場合がございますので、宜しく御了承下さい。
2★Pandaのインストール
http://www.montsuqi.org/
にて、必要なミドルウェアをダウンロードしてきてインストールします。
全てのミドルウェアは、ホームディレクトリにインストールされているものとします。
筆者は次のものをインストールしています。
2-1☆Pandaをインストールする前に必要なもの
http://www.nurs.or.jp/~ogochan/panda/
にて、「環境」項目から依存しているライブラリをダウンロードします。
○gtk+panda (version 0.9.0)
$ ./configure
$ make all
# make install
○libfixed(010919版)
$ ./configure
$ make all
# make install
○i18n-char(version 0.01)
$ make all
2-2☆Pandaのインストール
○panda(version 1.1.2)
$ ./autogen.sh
$ ./configure --with-opencobol --with-postgres --with-shell (※)
$ make all
# make install
問題なければ、上記でインストールされます。
もしも問題があった場合は、
1、足りないソフトウェアがある
2、Makefileに記述されている、ホームディレクトリのpath指定が間違っている場合がある
3、オプションの指定が間違っている
などが考えられますので、注意深く調べてみましょう
※OpenCOBOL、PostgresSQL、Shellを使用の場合。
このドキュメントでは、PostgresSQL、Shellは使用していませんが、
後々のことを考え、上記のように指定しました。
各オプションについて、詳しくは $ ./configure --help を 御覧ください
3★サンプルデモを動かしてみる
それでは早速Pandaを動かしてみましょう。
このドキュメントでは、
Pandaのソースに付属されているサンプルデモを使用します。
ここではWEB用のサンプルデモでもある、 sample1 を動かしてみましょう。
~/panda/samples/sample1
以下に、そのソース郡が収録されています。
WEB用に動かすためのドキュメントが存在します。
~/panda/Doc/DEMO5 の、「webインターフェイスのデモ」を参考に、
~/panda/samples/sample1を動かしてみましょう。
(※sample1は、WEB用以外でも使用できるサンプルです)
3-1☆サンプルデモをmakeする
sample1のディレクトリに移動し、サンプルデモプログラムをmakeします。
$ cd ~/panda/samples/sample1
$ make all
※CVSから取って来た場合は、必要なファイルのリンクがない時があります。
COBOLプログラムのCOPY句用ファイル、ENUM-VALUEファイルを、
demo1,demo2のディレクトリにあらかじめリンクしておきましょう。
$ ln ../../cobol/ENUM-VALUE ./demo1/
$ ln ../../cobol/ENUM-VALUE ./demo2/
※CVS(2003/03/27時点)の最新版で、
COBOLプログラムのCOPY句用ファイル、
DB-METAファイルを生成するときに、エラーが生じる模様です。
demo1,demo2のMakefileの、
DB-METAファイル生成部分を以下のように書き換えるとうまくいきます。
$ vi ./demo1/Makefile
$ vi ./demo2/Makefile
↓
DB-META: $(METAREC) $(DIRECTORY)
$(COPYGEN) -prefix meta- -dbrec -ld $(LDNAME) $(METAREC) > DB-META
3-2☆必要なファイルの配置
以下のファイルを、public_htmlに移動、もしくはコピーします。
panda/htserver/mon.cgi,
panda/samples/sample1/ 以下の各 .htc ファイル (※1)
mon.cgiは、htserver(WEBプレゼンテーションサーバー)と協調して、
ブラウザ上でプログラム本体に接続するためのCGIです。
パーミッションは、0755としておきます。
htcファイルは、画面構成ファイルになります。
~/panda/htserver$ cp ./mon.cgi ~/public_html/
~/panda/samples/sample1$ cp ./*.htc ~/public_html/ (※1)
※~/public_html/は、Apacheの設定によって変更して下さい
※mon.cgiに記述されているホームディレクトリのpath指定が違っている場合があります。
一度確認して、自分のホームディレクトリに変更しておきましょう。
またhtserverのデフォルトポート番号は、8011ですが、
mon.cgiの指定が違う場合があります。そこもチェックしておきましょう。
$ vi ~/public_html/mon.cgi
↓
~/panda/htserver/mon -command "panda:demo1" -screen ~/panda/samples/sample1 -server "localhost:8011" -dump -cookie
※1:mon.cgiに、-screenのオプションの指定が存在する場合は、
htcファイルをそのオプションで指定されているディレクトリにコピーして下さい。
3-3☆PATHを通しておく
COB_LIBRARY_PATHに、以下のPATHを通しておきます。
COB_LIBRARY_PATHは、
COBOLプログラム用のライブラリーが存在する場所を示すPATHです。
$ export COB_LIBRARY_PATH=.:~/panda/aps/.libs
3-4☆サンプルデモの起動
makeができたら、ドキュメント、~/panda/DOC/DEMO5の通りに、
サンプルデモを動かしてみます。
ターミナル1つでも十分起動できるのですが、
念のため、命令毎にターミナルを起動させてみましょう。
*ターミナル1(aps/demo1)
~/panda/samples/sample1/demo1$ ~/panda/aps/aps -port 9100 -record .. -lddir .. -dir ../directory -db ORCA demo1
*ターミナル2(aps/demo2)
~/panda/samples/sample1/demo2$ ~/panda/aps/aps -port 9200 -record .. -lddir .. -dir ../directory -db ORCA demo2
*ターミナル3(wfc)
~/panda/samples/sample1$ ~/panda/wfc/wfc
*ターミナル4(htserver)
~/panda/samples/sample1$ ~/panda/htserver/htserver
起動できましたでしょうか?
では早速、ブラウザでアクセスしてみましょう。
http://127.0.0.1/~***/mon.cgi
どうですか?画面が出てきたでしょうか?
いろいろ動かしてみてください。Pandaの素晴らしさがわかるでしょう。
では、このサンプルデモに、もう一画面、追加してみましょう。
4★プログラムファイルの関係
プログラムに入る前に、
各プログラムファイルの関係を整理してみましょう。
おおまかに、Pandaのシステムは以下のファイル構成で
成り立っていると言えます。

○directory
実行環境全体の基本宣言を記述するファイルです。
起動するシステムには、必ず1つ存在しなければなりません。
ここからシステムのための、LDファイルを読み込みます。
○ld
WFCとの関係、
画面とプログラムの関係を宣言します。
○htc/glade
画面ファイルです。
htcはWEB用として使います。
今回使用するのはhtcのみになります。
○rec
変数定義ファイルです。(画面用)
このファイルに記述された変数は、
上記の画面ファイル(htcまたはglade)の中で記述することによって、使用できます。
またこのファイルから、copygenで下記のSCRAREAファイルを生成します。
○SCRAREA
変数定義ファイルです。(プログラム用)
このファイルに、COBOL用の変数を定義し、
下記のCOBOLプログラムにCOPY句で読み込みます。
基本的に、recファイルと対応しています。
○COBOL(CBL)
プログラム本体です。
Pandaは現在、COBOL言語でプログラムを書くようになっています。
5★プログラミングの仕方
関係がわかったところで、早速プログラムを書いてみましょう。
PandaのWEB用プログラミングの仕方は
基本的なPandaのプログラミングの仕方と変わりありません。
のでここでは簡単に、上記のサンプルデモに、1画面だけ追加する
サンプルコードを紹介するにとどめておきます。
※このドキュメントからリンクされているサンプルコードは、拡張子を[.txt]とし、
ダウンロードし、保存して使用する場合は各々の拡張子に変更することを前提としています。
5-1☆追加するプログラムの名前を決め、ディレクトリを作る
ここで作成するプログラムは、hello world!!と表示されるだけのものにします。
名前を決め、ディレクトリを追加するところから始めましょう。
ここでは「demotest」とします。
sample1のデモに追加するのですから、
sample1ディレクトリに移動し、demotestディレクトリを作ります。
~/panda/samples/sample1$ mkdir demotest
5-2☆sample1のMakefileに、demotestが追加されたことを記述
今のままでは sample1 を make all したときに、
demotest を make してくれないので、
その旨、sample1のMakefileに記述します。
下の部分に、demotestを追加します。
~/panda/samples/sample1$ vi Makefile
SUBDIRS = demo1 demo2 demotest1
5-3☆ld、spa、recをそれぞれ用意
ここでは名前を、
demotest.ld
demotestspa.rec
projecttest.rec : 「TEST」変数一つだけ定義
とし、sample1ディレクトリに配置します
5-4☆COBOLファイル、仮のSCRAREA、を用意
プログラム本体となるCOBOLファイルを用意し、
またそれに対応した、仮のSCRAREAファイルを用意します。
ここでは名前を、demo1などにならって、
TPDEMOTEST.CBL
SCRAREA
とし、sample1/demotestディレクトリに配置します。
この際に、TPDEMOTEST.CBLの方で、
初期化時、TEST変数(※)に、hello world!!と代入しておきます。
※TEST変数は、さきほどrecファイルに記述した、
たった1つの変数→それに対応した、SCRAREAに記述した変数です。
SCRAREAとrecファイルの変数は、
同じ順番で、同じサイズで記述されていなければなりません。
5-5☆demotestのMakefileを用意
demotestのMakefileを用意します。
難しく考える必要はありません、demo2のMakefileをコピーして、
それを少し変えたものを使いましょう。
Makefile
sample1/demotestディレクトリに配置します。
5-6☆一度makeする
一度、この状態で、make allしてみます。
すると、demotestディレクトリにSCRAREA.SEが生成されます。
それを元に、demotestのSCRAREAを作り直します。
SCRAREA
5-7☆画面ファイル、htcを作る
glade-pandaというミドルウェアを使用し、
gladeファイルを生成し、panda/toolsの中の、htcgen.rbを使用して、
htcファイルを生成することが可能です。
(※Ruby、glade-pandaがインストールされている場合)
~/panda/tools$ ruby htcgen.rb ../samples/sample1/project1.glade > ../samples/sample1/project1.htc
ここでは簡単なhtcファイルですので、
glade-pandaを使用せずに作ってしまいましょう。
記述する変数は、recで記述されている変数に対応しています。
projecttest.htc
「3-2☆必要なファイルの配置」の項目で、
htcファイルを置いた場所に、このファイルも置いておきます。
5-8☆mon.cgiの修正
このままでmon.cgiを起動すると、
demo1が起動されるようになっていますので、
mon.cgiを変更して、demotestが起動されるようにしましょう。
mon.cgi
demo1 → demotest
5-9☆もう一度make all
それでは全ての準備が整いました。
sample1ディレクトリに戻って、make allしてみましょう。
~/panda/samples/sample1$ make all
エラーはでませんでしたでしょうか。
もしエラーがでた場合は、
COBOLのエラー、directory等の宣言エラーの二つが考えられますので、
Makefileを確認しながら、詳細を見てみましょう。
5-10☆demotestを起動
では、demotestを起動してみましょう。
「3-4☆サンプルデモの起動」項目で、
やったとおりにもう一度起動させます。
その時、ターミナル1〜2の段階で、もう一つターミナルをあげ、
demotestディレクトリに移動し、以下のコマンドを打ちます。
*ターミナル(aps/demotest)
~/panda/samples/sample1/demotest$ ~/panda/aps/aps -port 9300 -record .. -lddir .. -dir ../directory -db ORCA demotest
起動できましたでしょうか?
ではブラウザでアクセスしてみましょう。
http://127.0.0.1/~***/mon.cgi
どうでしょうか?
さきほど作ったとおりの画面がでてきましたでしょうか?
ボタンを押してみて下さい、demo1に移動されます。
6★終
以上でこのドキュメントは終りとなります。
お読み頂きありがとうございました。
Copyright (C) 2002 Japan Medical Association. All rights reserved.