TinyCOBOLでWebプログラミング 2001/10/20
TinyCOBOLで簡単にCGIプログラミングが出来ます。
幣サイト フリープログラミングのコーナーで作成済みの 宅配便送料計算プログラム2001/06/09版をWeb化いたしました。
作成環境 Vine Linux 2.1/Apache1.3.14
![]() |
左の画面が私のマシン(192.168.1.3)のTOPペー(index.htm)です。 この画面で入力した内容を一旦PerlのCGIに渡して、PerlからCOBOLプログラムを起動させ、COBOLのプログラムで各種計算をして、その結果をCOBOLのDISPLAY命令を使用しHTML形式で標準入出力に出力する という仕組みになっております。 左の画面で計算ボタンを押すと 左下の画面で計算結果が表示されます。 |
![]() |
この画面がCOBOLのDISPLAY命令でHTML形式のデータを標準入出力に出力させた 画面です。 |
| もちろんLANで繋がった他のWindowsのマシンからもアクセス出来ます。 以下の画面がWindowsのマシンからアクセスしたときの画面です。 |
|
![]() |
![]() |
エラーチェックはCOBOLプログラムでチェックしております。下の例は高さに数値以外を入力したときのエラーです。 |
|
![]() |
![]() |
以下ソースです。
入力項目数値変換サブルーチン subxに関してはSPEC社から発売されている「実習MS−DOS LEVELUCOBOL入門」を参照してください。
| 1.index.htm /home/httpd/htmlに置きます。 Apacheのデフォルトではここがドキュメントディレクトリになっております。 (ユーザを作成しユーザディレクトリに設置する方が良いと思いますが 今回はデフォルトを使用しました。) |
| <HTML> <HEAD> <TITLE>運賃算出</TITLE> </HEAD> <BODY><FORM method="GET" action="/cgi-bin/web01.cgi"> <FONT color="#cc0000" size="4">宅配便送料算出</FONT><BR><BR> 発地 <SELECT name="hat"> <OPTION value="0" selected>北海道</OPTION> <OPTION value="1">青森県</OPTION> <OPTION value="2">秋田県</OPTION> <OPTION value="3">岩手県</OPTION> <OPTION value="4">宮城県</OPTION> <OPTION value="5">山形県</OPTION> <OPTION value="6">福島県</OPTION> <OPTION value="7">茨城県</OPTION> <OPTION value="8">栃木県</OPTION> <OPTION value="9">群馬県</OPTION> <OPTION value="10">埼玉県</OPTION> <OPTION value="11">千葉県</OPTION> <OPTION value="12">東京都</OPTION> <OPTION value="13">神奈川県</OPTION> <OPTION value="14">山梨県</OPTION> <OPTION value="15">長野県</OPTION> <OPTION value="16">新潟県</OPTION> <OPTION value="17">富山県</OPTION> <OPTION value="18">石川県</OPTION> <OPTION value="19">福井県</OPTION> <OPTION value="20">静岡県</OPTION> <OPTION value="21">愛知県</OPTION> <OPTION value="22">岐阜県</OPTION> <OPTION value="23">三重県</OPTION> <OPTION value="24">滋賀県</OPTION> <OPTION value="25">京都府</OPTION> <OPTION value="26">大阪府</OPTION> <OPTION value="27">兵庫県</OPTION> <OPTION value="28">奈良県</OPTION> <OPTION value="29">和歌山県</OPTION> <OPTION value="30">岡山県</OPTION> <OPTION value="31">広島県</OPTION> <OPTION value="32">山口県</OPTION> <OPTION value="33">鳥取県</OPTION> <OPTION value="34">島根県</OPTION> <OPTION value="35">徳島県</OPTION> <OPTION value="36">高知県</OPTION> <OPTION value="37">福岡県</OPTION> <OPTION value="38">佐賀県</OPTION> <OPTION value="39">長崎県</OPTION> <OPTION value="40">熊本県</OPTION> <OPTION value="41">大分県</OPTION> <OPTION value="42">宮崎県</OPTION> <OPTION value="43">鹿児島県</OPTION> <OPTION value="45">沖縄県</OPTION> </SELECT> 着地 <SELECT name="chk"> <OPTION value="0" selected>北海道</OPTION> <OPTION value="1">青森県</OPTION> <OPTION value="2">秋田県</OPTION> <OPTION value="3">岩手県</OPTION> <OPTION value="4">宮城県</OPTION> <OPTION value="5">山形県</OPTION> <OPTION value="6">福島県</OPTION> <OPTION value="7">茨城県</OPTION> <OPTION value="8">栃木県</OPTION> <OPTION value="9">群馬県</OPTION> <OPTION value="10">埼玉県</OPTION> <OPTION value="11">千葉県</OPTION> <OPTION value="12">東京都</OPTION> <OPTION value="13">神奈川県</OPTION> <OPTION value="14">山梨県</OPTION> <OPTION value="15">長野県</OPTION> <OPTION value="16">新潟県</OPTION> <OPTION value="17">富山県</OPTION> <OPTION value="18">石川県</OPTION> <OPTION value="19">福井県</OPTION> <OPTION value="20">静岡県</OPTION> <OPTION value="21">愛知県</OPTION> <OPTION value="22">岐阜県</OPTION> <OPTION value="23">三重県</OPTION> <OPTION value="24">滋賀県</OPTION> <OPTION value="25">京都府</OPTION> <OPTION value="26">大阪府</OPTION> <OPTION value="27">兵庫県</OPTION> <OPTION value="28">奈良県</OPTION> <OPTION value="29">和歌山県</OPTION> <OPTION value="30">岡山県</OPTION> <OPTION value="31">広島県</OPTION> <OPTION value="32">山口県</OPTION> <OPTION value="33">鳥取県</OPTION> <OPTION value="34">島根県</OPTION> <OPTION value="35">徳島県</OPTION> <OPTION value="36">高知県</OPTION> <OPTION value="37">福岡県</OPTION> <OPTION value="38">佐賀県</OPTION> <OPTION value="39">長崎県</OPTION> <OPTION value="40">熊本県</OPTION> <OPTION value="41">大分県</OPTION> <OPTION value="42">宮崎県</OPTION> <OPTION value="43">鹿児島県</OPTION> <OPTION value="45">沖縄県</OPTION> </SELECT> <BR><BR><BR> <INPUT size="9" type="text" name="tate" value="0" istyle="4">縦のサイズ <BR> <INPUT size="9" type="text" name="yoko" value="0" istyle="4">横のサイズ<BR> <INPUT size="9" type="text" istyle="4" name="takasa" value="0">高さ<BR> <INPUT size="9" type="text" name="omosa" istyle="4" value="0">重量(グラム)<BR> <BR> <INPUT type="radio" name="gyo" value="1" checked> クロネコヤマト宅急便<BR> <INPUT type="radio" value="2" name="gyo"> ゆうパック<BR><BR> <INPUT type="submit" value="計算"></FORM> </BODY> </HTML> |
| 2.web01.cgi /home/httpd/cgi-binに置きます。 (こちらもApacheのデフォルトディレクトリーを使用しました) この時cgi-lib.plも同じディレクトリーに置いて下さい。 cgi-lib.plはフォームのデータをデコードするツールです。 http://cgi-lib.berkeley.edu/ からダウンロードできます。 |
#!/usr/bin/perl
require 'cgi-lib.pl';
&ReadParse(*in);
$hat = $in{'hat'};
$chk = $in{'chk'};
$tate = $in{'tate'};
$yoko = $in{'yoko'};
$takasa = $in{'takasa'};
$omosa = $in{'omosa'};
$gyo = $in{'gyo'};
system "./yamato $tate $yoko $takasa $omosa $hat $chk";
exit;
|
| 3.yamato.cob 実行モジュールを/home/httpd/cgi-binに置きます。 (別のディレクトリーでコンパイルリンクし実行モジュールだけ持ってきました。) |
IDENTIFICATION DIVISION.
PROGRAM-ID. YAMATO.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 WK-OUT PIC X(20).
01 CMDLINE-PARMS PIC X(64).
01 WK-PRONAME PIC X(10) VALUE '$$$$$$$$$$'.
01 WK-ACC01 PIC X(15) VALUE '$$$$$$$$$$$$$$$'.
01 WK-ACC02 PIC X(15) VALUE '$$$$$$$$$$$$$$$'.
01 WK-ACC03 PIC X(15) VALUE '$$$$$$$$$$$$$$$'.
01 WK-ACC04 PIC X(15) VALUE '$$$$$$$$$$$$$$$'.
01 WK-ACC05 PIC X(02) VALUE '$$'.
01 WK-ACC06 PIC X(02) VALUE '$$'.
01 A PIC X(15).
01 C PIC S9(12)V9(3).
01 JSW PIC 9 VALUE ZERO.
01 WK-KWKKA.
03 WK-TATE PIC S9(06)V9(3).
03 WK-YOKO PIC S9(06)V9(3).
03 WK-TAKA PIC S9(06)V9(3).
03 WK-OMOS PIC S9(06)V9(3).
01 WK-SIZE1 PIC S9(06)V9(3).
01 WK-SIZE2 PIC S9(06)V9(3).
01 WK-SIZE PIC S9(06)V9(3).
01 WK-3HEN PIC S9(06)V9(3).
01 WK-DKIN PIC ZZ,ZZZ,ZZ9.
01 WK-OUT PIC X(10).
01 I PIC 9(3).
01 J PIC 9(3).
01 WK-INDEXH PIC 9(3).
01 WK-INDEXC PIC 9(3).
01 SW-ERR PIC 9(1).
01 WT-60.
03 WT-60DAT.
05 WT-60DAT1 PIC X(48) VALUE
"074009501050116011601260126014701580168017901890".
05 WT-60DAT2 PIC X(48) VALUE
"095007400740084008400950095010501160126013701580".
05 WT-60DAT3 PIC X(48) VALUE
"105007400740074007400840084009501160126013701470".
05 WT-60DAT4 PIC X(48) VALUE
"116008400740074007400740074008400950105011601260".
05 WT-60DAT5 PIC X(48) VALUE
"116008400740074007400740074008400950105011601370".
05 WT-60DAT6 PIC X(48) VALUE
"126009500840074007400740074007400840095009501260".
05 WT-60DAT7 PIC X(48) VALUE
"126009500840074007400740074007400840095009501370".
05 WT-60DAT8 PIC X(48) VALUE
"126009500840074007400740074007400840095009501370".
05 WT-60DAT9 PIC X(48) VALUE
"158011601160095009500840084007400740084007401260".
05 WT-60DAT10 PIC X(48) VALUE
"168012601260105010500950095008400840074008401260".
05 WT-60DAT11 PIC X(48) VALUE
"179013701370116011600950095008400740084007401160".
05 WT-60DAT12 PIC X(48) VALUE
"189015801470126013701260137012601260126011600740".
03 WT-60TBL.
05 WT-60TBLX OCCURS 12.
07 WT-60KIN PIC 9(04) OCCURS 12.
01 WT-80.
03 WT-80DAT.
05 WT-80DAT1 PIC X(48) VALUE
"095011601260137013701470147016801790189020002420".
05 WT-80DAT2 PIC X(48) VALUE
"116009500950105010501160116012601370147015802100".
05 WT-80DAT3 PIC X(48) VALUE
"126009500950095009501050105011601370147015802000".
05 WT-80DAT4 PIC X(48) VALUE
"137010500950095009500950095010501160126013701790".
05 WT-80DAT5 PIC X(48) VALUE
"137010500950095009500950095010501160126013701890".
05 WT-80DAT6 PIC X(48) VALUE
"147011601050095009500950095009501050116011601790".
05 WT-80DAT7 PIC X(48) VALUE
"147011601050095009500950095009501050116011601890".
05 WT-80DAT8 PIC X(48) VALUE
"168012601160105010500950095009500950105010501790".
05 WT-80DAT9 PIC X(48) VALUE
"179013701370116011601050105009500950105009501790".
05 WT-80DAT10 PIC X(48) VALUE
"189014701470126012601160116010501050095010501790".
05 WT-80DAT11 PIC X(48) VALUE
"200015801580137013701160116010500950105009501680".
05 WT-80DAT12 PIC X(48) VALUE
"242021002000179018901790189017901790179016800950".
03 WT-80TBL.
05 WT-80TBLX OCCURS 12.
07 WT-80KIN PIC 9(04) OCCURS 12.
01 WT-100.
03 WT-100DAT.
05 WT-100DAT1 PIC X(48) VALUE
"116013701470158015801680168018902000210022102940".
05 WT-100DAT2 PIC X(48) VALUE
"137011601160126012601370137014701580168017902630".
05 WT-100DAT3 PIC X(48) VALUE
"147011601160116011601260126013701580168017902520".
05 WT-100DAT4 PIC X(48) VALUE
"158012601160116011601160116012601370147015802310".
05 WT-100DAT5 PIC X(48) VALUE
"158012601160116011601160116012601370147015802420".
05 WT-100DAT6 PIC X(48) VALUE
"168013701260116011601160116011601260137013702310".
05 WT-100DAT7 PIC X(48) VALUE
"168013701260116011601160116011601260137013702420".
05 WT-100DAT8 PIC X(48) VALUE
"189014701370126012601160116011601160126012602310".
05 WT-100DAT9 PIC X(48) VALUE
"200015801580137013701260126011601160126011602310".
05 WT-100DAT10 PIC X(48) VALUE
"210016801680147014701370137012601260116012602310".
05 WT-100DAT11 PIC X(48) VALUE
"221017901790158015801370137012601160126011602210".
05 WT-100DAT12 PIC X(48) VALUE
"294026302520231024202310242023102310231022101160".
03 WT-100TBL.
05 WT-100TBL1 OCCURS 12.
07 WT-100KIN PIC 9(04) OCCURS 12.
01 WT-120.
03 WT-120DAT.
05 WT-120DAT1 PIC X(48) VALUE
"137015801680179017901890189021002210231024203470".
05 WT-120DAT2 PIC X(48) VALUE
"158013701370147014701580158016801790189020003150".
05 WT-120DAT3 PIC X(48) VALUE
"168013701370137013701470147015801790189020003050".
05 WT-120DAT4 PIC X(48) VALUE
"179014701370137013701370137014701580168017902840".
05 WT-120DAT5 PIC X(48) VALUE
"179014701370137013701370137014701580168017902940".
05 WT-120DAT6 PIC X(48) VALUE
"189015801470137013701370137013701470158015802840".
05 WT-120DAT7 PIC X(48) VALUE
"189015801470137013701370137013701470158015802940".
05 WT-120DAT8 PIC X(48) VALUE
"210016801580147014701370137013701370147014702840".
05 WT-120DAT9 PIC X(48) VALUE
"221017901790158015801470147013701370147013702840".
05 WT-120DAT10 PIC X(48) VALUE
"231018901890168016801580158014701470137014702840".
05 WT-120DAT11 PIC X(48) VALUE
"242020002000179017901580158014701370147013702730".
05 WT-120DAT12 PIC X(48) VALUE
"347031503050284029402840294028402840284027301370".
03 WT-120TBL.
05 WT-120TBL1 OCCURS 12.
07 WT-120KIN PIC 9(04) OCCURS 12.
01 WT-140.
03 WT-140DAT.
05 WT-140DAT1 PIC X(48) VALUE
"158017901890200020002100210023102420252026303990".
05 WT-140DAT2 PIC X(48) VALUE
"179015801580168016801790179018902000210022103680".
05 WT-140DAT3 PIC X(48) VALUE
"189015801580158015801680168017902000210022103570".
05 WT-140DAT4 PIC X(48) VALUE
"200016801580158015801580158016801790189020003360".
05 WT-140DAT5 PIC X(48) VALUE
"200016801580158015801580158016801790189020003470".
05 WT-140DAT6 PIC X(48) VALUE
"210017901680158015801580158015801680179017903360".
05 WT-140DAT7 PIC X(48) VALUE
"210017901680158015801580158015801680179017903470".
05 WT-140DAT8 PIC X(48) VALUE
"231018901790168016801580158015801580168016803360".
05 WT-140DAT9 PIC X(48) VALUE
"242020002000179017901680168015801580168015803360".
05 WT-140DAT10 PIC X(48) VALUE
"252021002100189018901790179016801680158016803360".
05 WT-140DAT11 PIC X(48) VALUE
"263022102210200020001790179016801580168015803260".
05 WT-140DAT12 PIC X(48) VALUE
"399036803570336034703360347033603360336032601580".
03 WT-140TBL.
05 WT-140TBL1 OCCURS 12.
07 WT-140KIN PIC 9(04) OCCURS 12.
01 WT-160.
03 WT-160DAT.
05 WT-160DAT1 PIC X(48) VALUE
"179020002100221022102310231025202630273028404520".
05 WT-160DAT2 PIC X(48) VALUE
"200017901790189018902000200021002210231024204200".
05 WT-160DAT3 PIC X(48) VALUE
"210017901790179017901890189020002210231024204100".
05 WT-160DAT4 PIC X(48) VALUE
"221018901790179017901790179018902000210022103890".
05 WT-160DAT5 PIC X(48) VALUE
"221018901790179017901790179018902000210022103990".
05 WT-160DAT6 PIC X(48) VALUE
"231020001890179017901790179017901890200020003890".
05 WT-160DAT7 PIC X(48) VALUE
"231020001890179017901790179017901890200020003990".
05 WT-160DAT8 PIC X(48) VALUE
"252021002000189018901790179017901790189018903890".
05 WT-160DAT9 PIC X(48) VALUE
"263022102210200020001890189017901790189017903890".
05 WT-160DAT10 PIC X(48) VALUE
"273023102310210021002000200018901890179018903890".
05 WT-160DAT11 PIC X(48) VALUE
"284024202420221022102000200018901790189017903780".
05 WT-160DAT12 PIC X(48) VALUE
"452042004100389039903890399038903890389037801790".
03 WT-160TBL.
05 WT-160TBL1 OCCURS 12.
07 WT-160KIN PIC 9(04) OCCURS 12.
PROCEDURE DIVISION.
A-000.
ACCEPT CMDLINE-PARMS FROM COMMAND-LINE.
UNSTRING CMDLINE-PARMS DELIMITED BY ' ' INTO
WK-PRONAME WK-ACC01 WK-ACC02 WK-ACC03 WK-ACC04 WK-ACC05 WK-ACC06.
IF WK-ACC01 = LOW-VALUE OR
WK-ACC02 = LOW-VALUE OR
WK-ACC03 = LOW-VALUE OR
WK-ACC04 = LOW-VALUE OR
WK-ACC05 = LOW-VALUE OR
WK-ACC06 = LOW-VALUE
MOVE "入力エラー" TO WK-OUT
MOVE 1 TO SW-ERR
GO TO A-800
END-IF.
** 縦 **
MOVE WK-ACC01 TO A.
MOVE ZERO TO C.
CALL "SUBX" USING A C JSW.
IF JSW NOT = ZERO
MOVE "縦数値エラー" TO WK-OUT
MOVE 1 TO SW-ERR
GO TO A-800
END-IF.
MOVE C TO WK-TATE.
** 横 **
MOVE WK-ACC02 TO A.
MOVE ZERO TO C.
CALL "SUBX" USING A C JSW.
IF JSW NOT = ZERO
MOVE "横数値エラー" TO WK-OUT
MOVE 1 TO SW-ERR
GO TO A-800
END-IF.
MOVE C TO WK-YOKO.
** 高さ**
MOVE WK-ACC03 TO A.
MOVE ZERO TO C.
CALL "SUBX" USING A C JSW.
IF JSW NOT = ZERO
MOVE "高さ数値エラー" TO WK-OUT
MOVE 1 TO SW-ERR
GO TO A-800
END-IF.
MOVE C TO WK-TAKA.
** 重量 **
MOVE WK-ACC04 TO A.
MOVE ZERO TO C.
CALL "SUBX" USING A C JSW.
IF JSW NOT = ZERO
MOVE "重量数値エラー" TO WK-OUT
MOVE 1 TO SW-ERR
GO TO A-800
END-IF.
MOVE C TO WK-OMOS.
**発地 **
MOVE WK-ACC05 TO WK-INDEXH.
**着地 **
MOVE WK-ACC06 TO WK-INDEXC.
*
** サイズチェック **
COMPUTE WK-3HEN = WK-TATE + WK-YOKO + WK-TAKA.
IF WK-3HEN NOT > 60
MOVE 60 TO WK-SIZE1
ELSE
IF WK-3HEN NOT > 80
MOVE 80 TO WK-SIZE1
ELSE
IF WK-3HEN NOT > 100
MOVE 100 TO WK-SIZE1
ELSE
IF WK-3HEN NOT > 120
MOVE 120 TO WK-SIZE1
ELSE
IF WK-3HEN NOT > 140
MOVE 140 TO WK-SIZE1
ELSE
IF WK-3HEN NOT > 160
MOVE 160 TO WK-SIZE1
ELSE
MOVE "サイズ オーバー" TO WK-OUT
MOVE 1 TO SW-ERR
GO TO A-800.
*
IF WK-OMOS NOT > 2000
MOVE 60 TO WK-SIZE2
ELSE
IF WK-OMOS NOT > 5000
MOVE 80 TO WK-SIZE2
ELSE
IF WK-OMOS NOT > 10000
MOVE 100 TO WK-SIZE
ELSE
IF WK-OMOS NOT > 15000
MOVE 120 TO WK-SIZE2
ELSE
IF WK-OMOS NOT > 20000
MOVE 140 TO WK-SIZE2
ELSE
IF WK-OMOS NOT > 25000
MOVE 160 TO WK-SIZE2
ELSE
MOVE "重量オーバー" TO WK-OUT
MOVE 1 TO SW-ERR
GO TO A-800.
*
IF WK-SIZE1 > WK-SIZE2
MOVE WK-SIZE1 TO WK-SIZE
ELSE
MOVE WK-SIZE2 TO WK-SIZE.
*
IF WK-INDEXH = 0
MOVE 1 TO I
ELSE
IF WK-INDEXH = 1 OR 2 OR 3
MOVE 2 TO I
ELSE
IF WK-INDEXH = 4 OR 5 OR 6
MOVE 3 TO I
ELSE
IF WK-INDEXH = 7 OR 8 OR 9 OR 10 OR
11 OR 12 OR 13 OR 14
MOVE 4 TO I
ELSE
IF WK-INDEXH = 15 OR 16
MOVE 5 TO I
ELSE
IF WK-INDEXH = 17 OR 18 OR 19
MOVE 6 TO I
ELSE
IF WK-INDEXH = 20 OR 21 OR 22 OR 23
MOVE 7 TO I
ELSE
IF WK-INDEXH = 24 OR 25 OR 26 OR 27 OR
28 OR 29
MOVE 8 TO I
ELSE
IF WK-INDEXH = 30 OR 31 OR 32 OR 33 OR
34
MOVE 9 TO I
ELSE
IF WK-INDEXH = 35 OR 36 OR 37 OR 38
MOVE 10 TO I
ELSE
IF WK-INDEXH = 39 OR 40 OR 41 OR 42 OR
43 OR 44 OR 45
MOVE 11 TO I
ELSE
MOVE 12 TO I.
*
IF WK-INDEXC = 0
MOVE 1 TO J
ELSE
IF WK-INDEXC = 1 OR 2 OR 3
MOVE 2 TO J
ELSE
IF WK-INDEXC = 4 OR 5 OR 6
MOVE 3 TO J
ELSE
IF WK-INDEXC = 7 OR 8 OR 9 OR 10 OR
11 OR 12 OR 13 OR 14
MOVE 4 TO J
ELSE
IF WK-INDEXC = 15 OR 16
MOVE 5 TO J
ELSE
IF WK-INDEXC = 17 OR 18 OR 19
MOVE 6 TO J
ELSE
IF WK-INDEXC = 20 OR 21 OR 22 OR 23
MOVE 7 TO J
ELSE
IF WK-INDEXC = 24 OR 25 OR 26 OR 27 OR
28 OR 29
MOVE 8 TO J
ELSE
IF WK-INDEXC = 30 OR 31 OR 32 OR 33 OR
34
MOVE 9 TO J
ELSE
IF WK-INDEXC = 35 OR 36 OR 37 OR 38
MOVE 10 TO J
ELSE
IF WK-INDEXC = 39 OR 40 OR 41 OR 42 OR
43 OR 44 OR 45
MOVE 11 TO J
ELSE
MOVE 12 TO J.
*
MOVE WT-60DAT TO WT-60TBL.
MOVE WT-80DAT TO WT-80TBL.
MOVE WT-100DAT TO WT-100TBL.
MOVE WT-120DAT TO WT-120TBL.
MOVE WT-140DAT TO WT-140TBL.
MOVE WT-160DAT TO WT-160TBL.
EVALUATE WK-SIZE
WHEN 60
MOVE WT-60KIN (I J) TO WK-DKIN
WHEN 80
MOVE WT-80KIN (I J) TO WK-DKIN
WHEN 100
MOVE WT-100KIN (I J) TO WK-DKIN
WHEN 120
MOVE WT-120KIN (I J) TO WK-DKIN
WHEN 140
MOVE WT-140KIN (I J) TO WK-DKIN
WHEN 160
MOVE WT-160KIN (I J) TO WK-DKIN
END-EVALUATE.
*
MOVE WK-DKIN TO WK-OUT.
GO TO A-900.
A 800.
DISPLAY 'Content-type: text/html'.
DISPLAY.
DISPLAY '<HTML>'.
DISPLAY '<HEAD><TITLE>入力エラー</TITLE></HEAD>'.
DISPLAY '<BODY>'.
DISPLAY '<FONT SIZE=5 COLOR=RED>入力エラー</FONT>'.
DISPLAY '<BR><BR>'.
DISPLAY WK-OUT.
DISPLAY '<BR><BR>'.
DISPLAY '<A HREF="../index.htm">HOME</A>'.
DISPLAY '</BODY>'.
DISPLAY '</HTML>'.
GO TO A-999.
A-900.
DISPLAY 'Content-type: text/html'.
DISPLAY.
DISPLAY '<HTML>'.
DISPLAY '<HEAD><TITLE>運賃算出結果</TITLE></HEAD>'.
DISPLAY '<BODY>'.
DISPLAY '<FONT SIZE=5>運賃算出結果</FONT>'.
DISPLAY '<BR>'.
DISPLAY '<BR>運賃は '.
DISPLAY WK-OUT.
DISPLAY ' 円です'.
DISPLAY '<BR><BR>'.
DISPLAY '<A HREF="../index.htm">HOME</A>'.
DISPLAY '</BODY>'.
DISPLAY '</HTML>'.
A-999.
EXIT-PROGRAM.
|
こんな感じでCOBOLでのCGIプログラミングが出来ました。
インターフェイスの受け渡しをコマンドラインベースで行なっているので あまり細かな制御は出来ないのですが、ただ単にHTMLからCOBOLを起動させ ファイル等の情報を表示するだけでのCGIであれば COBOLで作成したCGIで十分に目的を果たす事が出来るかと思います。
「フリーCOBOLでWebプログラムの作成」という楽しみがまた一つ増えました。