애플리케이션 예제

본 절에서는 생성한 스키마 파일을 기준으로 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 레코드에 저장하는 예제이다.

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 레코드에 저장하는 COBOL 애플리케이션의 예제이다.

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.