アプリケーションの例

本付録では、作成したスキーマ・ファイルをベースにして、NDBを使用するCOBOLアプリケーションの例について説明します。

アプリケーションを使用する前に、ターゲットNDBのレコードとセット情報が含まれたサブスキーマを作成します。

以下は、サブスキーマの例です。

************************
* SUBSCHEMA            *
************************
     SUBSCHEMA NAME         IS     SCHSUB
      ; SCHEMA NAME         IS     SCHOOL.
************************
* RECORD               *
************************
        01  CLASS1.
        01  SUBJECT.
        01  TEACHER.
        01  STUDENT.
************************
* SET                  *
************************
       SET  CLASUB.
       SET  SUBTEA.
       SET  TEASTU.
     END.

以下は、サブスキーマの作成方法です。

$ ndbadlgen store -p <sub-schema-file-name>

アプリケーションを実行する前に、プログラムの実行環境について記述したPEDファイルを作成して登録します。各アプリケーションのためのPEDファイルを登録するときは、jxdddmsツールを使用します。

*******************
* PED       ENTRY *
*******************
   PED          NAME          IS   CLARNGCR
      ; SWAP           POINT  IS   NOTHING.
*******************
* AP        ENTRY *
*******************
     AP         NAME          IS   CLACOB
      ; TRANSACTION-POINT     IS   SYSTEM .
*******************
* DATABASE  ENTRY *
*******************
     DATABASE   NAME          IS   SCHSUB
      ; ACCESS  MODE          IS
                MODIFY        FOR  SCHOOL
      ; PAGE           BUFFER IS   10
      ; INDEX          BUFFER IS   10
      ; EXTENDED INDEX BUFFER IS   10
      ; INCLUSION    SCHEMA   IS   SCHOOL
      ; EXCLUSIVE    UNIT     IS   RANGE.
*
    END.

以下は、CLARNG RANGEにデータを作成するCOBOLアプリケーションの例です。

例では、NDBデータベースのCLASS1レコードとSUBJECTレコードに値を保存しています。NDBを使用するには、まず、READYコマンドとサブスキーマ名を指定してデータ操作を準備し、STOREコマンドを使用してデータを保存します。NDBの使用が終わったら、FINISHコマンドを使用してNDB処理を終了します。

IDENTIFICATION DIVISION.
 PROGRAM-ID. 'CLACOB'.
 ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
 SOURCE-COMPUTER .
     FACOM .
 OBJECT-COMPUTER .
     FACOM .
 SUBSCHEMA-NAME.
     'SCHSUB'.
 DATA DIVISION.
*----------------------------------------------------------------*
 WORKING-STORAGE SECTION.
*----------------------------------------------------------------*
 01  WK-EOF-FLG                   PIC X(01) VALUE SPACE.
*----------------------------------------------------------------*
 PROCEDURE DIVISION.
*----------------------------------------------------------------*
*    MAIN CONTROL                                                *
*----------------------------------------------------------------*
 MAIN-CONTROL-PROC SECTION.
      READY.
         MOVE "01" TO CLA-AREA OF CLASS1.
         MOVE "EXERCISE" TO CLA-NAME OF CLASS1.
         MOVE 01012345678 TO CLA-TEL OF CLASS1.
         STORE 'CLASS1'.
     DISPLAY 'CLA-AREA :' CLA-AREA OF CLASS1.
     DISPLAY 'CLA-NAME :' CLA-NAME OF CLASS1.
     DISPLAY 'CLA-TEL :' CLA-TEL OF CLASS1.
     DISPLAY 'STORE DBECB :' DBECB OF FCOM.
         MOVE "YOGA" TO SUB-NAME OF SUBJECT.
         MOVE 01012345678 TO SUB-TEL OF SUBJECT.
         STORE 'SUBJECT'.
     DISPLAY 'CLA-AREA :' CLA-AREA OF CLASS1.
     DISPLAY 'CLA-NAME :' CLA-NAME OF CLASS1.
     DISPLAY 'CLA-TEL :' CLA-TEL OF CLASS1.
     DISPLAY 'STORE DBECB :' DBECB OF FCOM.
         FINISH.
     MAIN-CONTROL-EXIT.
     DISPLAY '*** CLARNGCOB END ***'.

以下は、TEARNG RANGEのデータを作成するアプリケーションで使用するPEDファイルの例です。

*******************
* PED       ENTRY *
*******************
   PED          NAME          IS   TEARNGCR
      ; SWAP           POINT  IS   NOTHING.
*******************
* AP        ENTRY *
*******************
     AP         NAME          IS   TEACOB
      ; TRANSACTION-POINT     IS   SYSTEM .
*******************
* DATABASE  ENTRY *
*******************
     DATABASE   NAME          IS   SCHSUB
      ; ACCESS  MODE          IS
                UPDATE         FOR  SCHOOL
      ; PAGE           BUFFER IS   10
      ; INDEX          BUFFER IS   10
      ; EXTENDED INDEX BUFFER IS   10
      ; INCLUSION    SCHEMA   IS   SCHOOL
      ; EXCLUSIVE    UNIT     IS   RANGE.
*
    END.

以下は、TEARNG RANGEのデータを作成するCOBOLアプリケーションの例です。

この例では、INPUTファイルからデータを読み込んでNDBのTEACHERレコードに保存し、PGNOとKEYDATAで構成されたKPDファイルを作成します。

IDENTIFICATION DIVISION.
PROGRAM-ID. 'TEACOB'.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SUBSCHEMA-NAME.  'SCHSUB'.
SOURCE-COMPUTER .
    FACOM .
OBJECT-COMPUTER .
   FACOM .
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
    SELECT IN-FILE ASSIGN TO SSYSIN.
DATA               DIVISION.
FILE               SECTION.
     FD    IN-FILE.
     01    IN-DATA.
     02  IN-TEANAME   PIC X(20).
     02  IN-TEAED     PIC X(2).
     02  IN-TEABD     PIC 9(8).
     02  IN-TEANO     PIC 9(8).

WORKING-STORAGE   SECTION.

PROCEDURE          DIVISION.
OPEN   INPUT    IN-FILE.

MAIN-CONTROL-PROC SECTION.
   READY 'SCHSUB'.
   READ   IN-FILE.
   MOVE   IN-DATA TO TEACHER.
   STORE 'TEACHER'
   FINISH.
   CLOSE IN-FILE

以下は、STURNG RANGEのデータを作成するアプリケーションで使用するPEDファイルの例です。

*******************
* PED       ENTRY *
*******************
   PED          NAME          IS   STURNGCR
      ; SWAP           POINT  IS   NOTHING.
*******************
* AP        ENTRY *
*******************
     AP         NAME          IS   STUCOB
      ; TRANSACTION-POINT     IS   SYSTEM .
*******************
* DATABASE  ENTRY *
*******************
     DATABASE   NAME          IS   SCHSUB
      ; ACCESS  MODE          IS
                UPDATE         FOR  SCHOOL
      ; PAGE           BUFFER IS   10
      ; INDEX          BUFFER IS   10
      ; EXTENDED INDEX BUFFER IS   10
      ; INCLUSION    SCHEMA   IS   SCHOOL
      ; EXCLUSIVE    UNIT     IS   RANGE.
*
    END.

以下は、STURNG RANGEのデータを作成するCOBOLアプリケーションの例です。

例では、INPUTファイルからデータを読み込み、IN-IDが「T」の場合はTEACHERレコードで検索し、「T」でない場合は、NDBのSTUDENTレコードに保存しています。

IDENTIFICATION DIVISION.
PROGRAM-ID. 'STUCOB'.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SUBSCHEMA-NAME.  'SCHSUB'.
SOURCE-COMPUTER .
    FACOM .
OBJECT-COMPUTER .
   FACOM .
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
    SELECT IN-FILE ASSIGN TO SSYSIN.
DATA               DIVISION.
FILE               SECTION.
     FD    IN-FILE.
     01    IN-DATA.
     02  IN-ID            PIC X(1).
     02  IN-TEACHER.
         03  IN-TEA-NAME  PIC X(20).
         03  IN-TEA-ED    PIC X(2).
     02 IN-STU REDEFINES IN-TEACHER.
         03  IN-STU-NAME  PIC X(20).
         03  IN-STU-BD    PIC X(2).

WORKING-STORAGE   SECTION.

PROCEDURE          DIVISION.
OPEN   INPUT    IN-FILE.

MAIN-CONTROL-PROC SECTION.
READY 'SCHSUB'.
READ-DATA.
     READ   IN-FILE AT END GO TO END-APP.
     IF IN-ID NOT = 'T' GO TO ST-STU.
GT-TEA.
     DISPLAY 'IN-TEA-NAME :' IN-TEA-NAME.
     DISPLAY 'IN-TEA-ED :' IN-TEA-ED.

     MOVE IN-TEA-NAME TO TEA-NAME OF TEACHER.
     MOVE IN-TEA-ED   TO TEA-ED OF TEACHER.
     FIND ANY 'TEACHER'.
     GO TO READ-DATA.
ST-STU.
     MOVE IN-STU TO STUDENT.
     STORE 'STUDENT'.
     GO TO READ-DATA.
END-APP.
     FINISH.
     CLOSE   IN-FILE.
     STOP    RUN.