This section contains the following topics:
Figure E-1 shows a COBOL copybook that illustrates arrays and nested arrays.
The following are the full source files for the Hospital database example that is used in Hierarchical Modelling and Constructing DLI Commands from SQL Requests.
Example E-1 Hospital Cobol Copybook
01 HOSPITAL. 03 HOSPNAME PIC X(20). 03 HOSP-ADDRESS PIC X(30). 03 HOSP-PHONE PIC X(10). 03 ADMIN PIC X(20). 01 WARD. 03 WARDNO PIC XX. 03 TOT-ROOMS PIC XXX. 03 TOT-BEDS PIC XXX. 03 BEDAVAIL PIC XXX. 03 WARDTYPE PIC X(20). 01 PATIENT. 03 PATNAME PIC X(20). 03 PATADDRESS PIC X(30). 03 PAT-PHONE PIC X(10). 03 BEDIDENT PIC X(4). 03 DATEADMT PIC X(6). 03 PREV-STAY-FLAG PIC X. 03 PREV-HOSP PIC X(20). 03 PREV-DATE PIC X(4). 03 PREV-REASON PIC X(30). 01 SYMPTOM. 03 DIAGNOSE PIC X(20). 03 SYMPDATE PIC X(6). 03 PREV-TREAT-FLAG PIC X. 03 TREAT-DESC PIC X(20). 03 SYMP-DOCTOR PIC X(20). 03 SYMP-DOCT-PHONE PIC X(10). 01 TREATMNT. 03 TRTYPE PIC X(20). 03 TRDATE PIC X(6). 03 MEDICATION-TYPE PIC X(20). 03 DIET-COMMENT PIC X(30). 03 SURGERY-FLAG PIC X. 03 SURGERY-DATE PIC X(6). 03 SURGERY-COMMENT PIC X(30). 01 DOCTOR. 03 DOCTNAME PIC X(20). 03 DOCT-ADDRESS PIC X(30). 03 DOCT-PHONE PIC X(10). 03 SPECIALT PIC X(20). 01 FACILITY. 03 FACTYPE PIC X(20). 03 TOT-FACIL PIC XXX. 03 FACAVAIL PIC XXX.
PRINT NOGEN DBD NAME=HOSPDBD,ACCESS=HDAM,RMNAME=(DFSHDC40,40,100) DATASET DD1=PRIME,DEVICE=3390 SEGM NAME=HOSPITAL,PARENT=0,BYTES=80 FIELD NAME=(HOSPNAME,SEQ,U),BYTES=20,START=1,TYPE=C FIELD NAME=ADMIN,BYTES=20,START=61,TYPE=C SEGM NAME=WARD,PARENT=HOSPITAL,BYTES=31 FIELD NAME=(WARDNO,SEQ,U),BYTES=2,START=1,TYPE=C FIELD NAME=BEDAVAIL,BYTES=3,START=9,TYPE=C FIELD NAME=WARDTYPE,BYTES=20,START=12,TYPE=C SEGM NAME=PATIENT,PARENT=WARD,BYTES=125 FIELD NAME=(BEDIDENT,SEQ,U),BYTES=4,START=61,TYPE=C FIELD NAME=PATNAME,BYTES=20,START=1,TYPE=C FIELD NAME=DATEADMT,BYTES=6,START=65,TYPE=C SEGM NAME=SYMPTOM,PARENT=PATIENT,BYTES=77 FIELD NAME=(SYMPDATE,SEQ),BYTES=6,START=21,TYPE=C FIELD NAME=DIAGNOSE,BYTES=20,START=1,TYPE=C SEGM NAME=TREATMNT,PARENT=PATIENT,BYTES=113 FIELD NAME=(TRDATE,SEQ),BYTES=6,START=21,TYPE=C FIELD NAME=TRTYPE,BYTES=20,START=1,TYPE=C SEGM NAME=DOCTOR,PARENT=PATIENT,BYTES=80 FIELD NAME=DOCTNAME,BYTES=20,START=1,TYPE=C FIELD NAME=SPECIALT,BYTES=20,START=61,TYPE=C SEGM NAME=FACILITY,PARENT=HOSPITAL,BYTES=26 FIELD NAME=FACTYPE,BYTES=20,START=1,TYPE=C FIELD NAME=FACAVAIL,BYTES=3,START=24,TYPE=C DBDGEN FINISH END
PRINT NOGEN PCB TYPE=DB,DBDNAME=HOSPDBD,PROCOPT=AP,KEYLEN=32 * SENSEG NAME=HOSPITAL,PARENT=0 SENSEG NAME=WARD,PARENT=HOSPITAL SENSEG NAME=PATIENT,PARENT=WARD SENSEG NAME=SYMPTOM,PARENT=PATIENT SENSEG NAME=TREATMNT,PARENT=PATIENT SENSEG NAME=DOCTOR,PARENT=PATIENT SENSEG NAME=FACILITY,PARENT=HOSPITAL * PSBGEN LANG=COBOL,PSBNAME=HOSPPSB END
Footnote Legend
Footnote 1: Kapp, Dan and Leben, Joe: IMS Programming Techniques. Van Nostrand Reinhold Company Inc., New York, 1986.