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 =