애플리케이션 예제
본 절에서는 생성한 스키마 파일을 기준으로 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.