ここでは、COBOLのGUIアプリケーションの例として、四則演算電卓の簡単なサンプルを示します。この例では、COBOLプログラムがバックエンドのロジックを処理し、GUI部分はJavaを使って実装しています。以下にその例を示します。
【COBOLソースコード (Calculator.cbl)】
IDENTIFICATION DIVISION.
PROGRAM-ID. Calculator.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NUM1 PIC 9(5)V9(2).
01 WS-NUM2 PIC 9(5)V9(2).
01 WS-RESULT PIC 9(5)V9(2).
LINKAGE SECTION.
01 LK-NUM1 PIC 9(5)V9(2).
01 LK-NUM2 PIC 9(5)V9(2).
01 LK-OPERATION PIC X.
01 LK-RESULT PIC 9(5)V9(2).
PROCEDURE DIVISION USING LK-NUM1 LK-NUM2 LK-OPERATION LK-RESULT.
MOVE LK-NUM1 TO WS-NUM1
MOVE LK-NUM2 TO WS-NUM2
EVALUATE LK-OPERATION
WHEN '+'
COMPUTE WS-RESULT = WS-NUM1 + WS-NUM2
WHEN '-'
COMPUTE WS-RESULT = WS-NUM1 - WS-NUM2
WHEN '*'
COMPUTE WS-RESULT = WS-NUM1 * WS-NUM2
WHEN '/'
IF WS-NUM2 NOT = 0
COMPUTE WS-RESULT = WS-NUM1 / WS-NUM2
ELSE
MOVE 0 TO WS-RESULT
END-IF
WHEN OTHER
MOVE 0 TO WS-RESULT
END-EVALUATE
MOVE WS-RESULT TO LK-RESULT
GOBACK.
END PROGRAM Calculator.
ビルドと実行手順
- COBOLコードをコンパイルして、動的ライブラリ(例:
.so
、.dll
など)を生成します。 - Javaコードをコンパイルして実行します。
これらの手順は環境によって異なりますが、以下は一般的な手順です。
1.COBOLコードのコンパイル:
代表取締役社長の北川達也氏
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SQL-STATEMENT PIC X(100).
01 SQL-RESULT PIC S9(4) COMP.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
MOVE "SELECT * FROM EMPLOYEES WHERE DEPARTMENT = 'SALES'" TO SQL-STATEMENT.
EXEC SQL
PREPARE SQL-STATEMENT
END-EXEC.
EXEC SQL
OPEN EMPLOYEE-CURSOR
END-EXEC.
EXEC SQL
FETCH NEXT FROM EMPLOYEE-CURSOR INTO :EMPLOYEE-ID, :EMPLOYEE-NAME
END-EXEC.
PERFORM UNTIL SQL-RESULT = 100
DISPLAY "EMPLOYEE ID: " EMPLOYEE-ID " EMPLOYEE NAME: " EMPLOYEE-NAME
EXEC SQL
FETCH NEXT FROM EMPLOYEE-CURSOR INTO :EMPLOYEE-ID, :EMPLOYEE-NAME
END-EXEC.
END-PERFORM.
EXEC SQL
CLOSE EMPLOYEE-CURSOR
END-EXEC.
STOP RUN.
このプログラムは、部署が "SALES" の従業員を表示する単純な例です。SQL文は文字列変数SQL-STATEMENT
に格納され、EXEC SQL
ステートメントによって実行されます。このコードは、実際のデータベース接続や設定には関係なく、SQL文の埋め込み方法を示しています。
実際には、プログラム内で使用するデータベースにアクセスするためには、データベース接続情報などの追加の設定が必要です。また、プリプロセッサを使用してCOBOLプログラムを生成するための手順もありますが、この手順はCOBOLの特定のコンパイラに依存します。
とのこと。
https://amzn.asia/d/8BeCip1
という本のレビュー覧で「COBOL埋め込みSQL」という文言が出てきたので、気になっていた。
レビューではさんざんなことが書かれていたが、このレビューをきっかけにPython埋め込みVisualBasic.netとかいろいろ閃いた。
さらにこんな情報も・・・
https://itpfdoc.hitachi.co.jp/manuals/3020/30203D6240/USR20403.HTM
https://software.fujitsu.com/jp/manual/manualfiles/M080271/J2X02268/06Z201/aplsq03/aplsq062.html
https://software.fujitsu.com/jp/manual/manualfiles/m140016/j2ul1756/03z200/j2ul-1756-03z0.pdf
Googleで「cobol 埋め込みsql」と入力して検索すべし。
【追伸】
Androidでコンパイルしてみたらエラーとなった。
main.cob: 20: warning: line not terminated by a newline
main.cob: 1: error: PROGRAM-ID header missing
main.cob: 1: error: ENVIRONMENT DIVISION header missing
main.cob: 1: error: CONFIGURATION SECTION header missing
main.cob: 1: error: SPECIAL-NAMES header missing
main.cob: 1: error: invalid system-name 'WHERE'
main.cob: 1: error: syntax error, unexpected =
実践COBOL資産移行ガイド https://amzn.asia/d/fpc7rz8