OpenFrame HiDB 기타 유틸리티
본 장에서는 OpenFrame HiDB의 운영 유틸리티에 대해 기술한다.
1. 개요
다음은 기타 유틸리티 목록이다. 각 유틸리티에 대한 설명은 해당 절에서 자세하게 기술한다.
| 프로그램명 | 설명 |
|---|---|
응용프로그램과 독립적으로 DL/I 호출을 할 수 있는 프로그램이다. |
|
OpenFrame/OSI의 Control region을 실행시키는 프로그램이다. |
|
다른 OpenFrame/HiDB 유틸리티 또는 shared object로 컴파일된 Batch 애플리케이션을 부가적인 파라미터 정보와 함께 실행한다. |
|
HiDB의 Secondary index segment table을 관리하기 위한 프로그램이다. |
2. DFSDDLT0
DFSDDLT0 유틸리티는 응용프로그램 테스트 유틸리티로 다음과 같은 기능을 수행한다.
-
제어 명령문 정보에 따라 IMS에 호출을 수행한다.
-
응용프로그램과 독립적으로 DL/I 호출을 할 수 있다.
|
HiDB의 DFSDDLT0 유틸리티는 IBM IMS/DB의 DFSDDLT0 유틸리티에 대응한다. |
2.1. EXEC 설정
EXEC 문장의 설정은 다음과 같다.
PGM=DFSRRC00,PARM='DLI,DFSDDLT0,PSB'
| 항목 | 설명 |
|---|---|
PGM |
DFSDDLT0 유틸리티는 IMS/DB 사용 프로그램의 실행 유틸리티인 DFSRRC00을 통해 실행된다. |
PARM |
유틸리티 Region의 DFSDDLT0 유틸리티를 실행한다. |
2.2. DD 설정
DD 설정 항목은 다음과 같다.
| 항목 | 설명 |
|---|---|
PRINTDD DD |
DFSDDLT0 유틸리티의 메시지가 출력된다. (필수 항목) |
SYSIN DD |
입력 컨트롤 문장이 담긴 데이터셋을 지정한다. (필수 항목) |
2.3. 명령어 설정
SYSIN에 기술된 문장은 위치에 따라 다음의 내용을 의미한다. 지원하는 기능의 파라미터에 대해서만 기술하였다.
2.3.1. STATUS 문
| 위치 | 설명 |
|---|---|
1 |
STATUS 문을 사용하면 인쇄 옵션을 설정하고 후속 호출을 발행할 PCB의 이름을 지정할 수 있다.
|
2 |
출력 장치 옵션을 지정한다.
|
3 |
Comment 출력 옵션을 지정한다.
|
4 |
AIB 출력 옵션을 지정한다.
|
5 |
CALL 출력 옵션을 지정한다.
|
6 |
공백 |
7 |
COMPARE 출력 옵션을 지정한다.
|
8 |
공백 |
9 |
PCB 출력 옵션을 지정한다.
|
10 |
공백 |
11 |
세그먼트 출력 옵션을 지정한다.
|
12 |
작업 시간을 설정한다. (현재 지원하지 않음) |
13-14 |
공백 |
15 |
PCB 선택 옵션을 지정한다.
|
16-23 |
PCB 선택 옵션을 지정한다. 기본 PCB는 PSB의 첫 번째 데이터베이스 PCB이다. (현재 컬럼 15가 2로 지정된 경우만 지원)
|
24 |
Status 출력 옵션을 지정한다.
|
25-28 |
PCB 처리 옵션을 지정한다.
|
29 |
공백 |
30-32 |
AIB 인터페이스를 지정한다.
|
33 |
공백 |
37-72 |
공백 |
73-80 |
주석 또는 시퀀스 번호를 기술하는 부분이나 OpenFrame에서는 무시한다. |
2.3.2. COMMENT 문
출력 데이터에 주석을 출력한다.
-
조건부 COMMENT
-
호출 당 최대 5개의 조건부 COMMENT 문을 사용할 수 있다.
-
컬럼 72에는 Continuation 표시가 필요하지 않다.
-
Status 문의 컬럼 3의 값에 따라 출력 여부를 제어한다.
-
-
무 조건부 COMMENT
-
제한없이 여러 개 사용 할 수 있다.
-
| 위치 | 설명 |
|---|---|
1 |
T 또는 U 중에 하나가 입력되어야 한다.
|
2-72 |
Comment 내용을 기술한다. |
73-80 |
주석 또는 시퀀스 번호를 기술하는 부분이나 OpenFrame에서는 무시한다. |
2.3.3. CALL FUNCTION 문
DL / I 호출 함수, 세그먼트 탐색 인수 (SSAs)를 작성한다. SSA는 IMS 표준에 따라 작성한다.
| 위치 | 설명 |
|---|---|
1 |
|
2 |
공백 |
3 |
공백 |
4 |
공백 |
5-8 |
반복 횟수이다. (현재 지원하지 않음)
|
10-13 |
DL/I CALL 식별자를 지정한다.
|
14-15 |
공백 |
16-23 |
SSA 이름을 지정한다.
|
24 |
공백 |
25 |
SSA 시작 문자를 지정한다.
|
26-33 |
SSA 필드 이름을 지정한다.
|
34 |
공백 |
35-36 |
DL/I Call Operator를 지정한다.
|
37 |
공백 |
38-nn |
필드 값을 지정한다.
|
nn+1 |
SSA 끝 문자를 지정한다.
|
72 |
Continuation 컬럼을 지정한다.
|
73-80 |
주석 또는 시퀀스 번호를 기술하는 부분이나 OpenFrame에서는 무시한다. |
2.3.4. CALL DATA 문
-
CALL FUNCTION의 호출 기능에 대해 I/O 영역에 일반적으로 제공되는 정보를 IMS에 제공한다.
-
CALL DATA 문은 마지막 CALL FUNCTION 문 다음에 와야한다.
-
컬럼 1에 L을 입력하고 컬럼 10~13에 DATA 키워드를 입력하고 컬럼 16~71 열에 필요한 데이터를 작성해야 한다.
-
컬럼 72에 공백이 아닌 문자를 입력하여 데이터를 계속 입력할 수 있다.
-
연속 구문에서 1 ~ 15는 공백이며 데이터는 컬럼 16에서 재개되어야 한다.
| 위치 | 설명 |
|---|---|
1 |
|
2 |
|
3 |
현재 지원하지 않는 옵션 |
4 |
Format 옵션을 지정한다. (현재 지원하지 않음)
|
5-8 |
세그먼트 데이터 길이를 지정한다. (현재 지원하지 않음)
|
9 |
공백 |
10-13 |
CALL DATA 문을 식별한다.
|
14-15 |
공백 |
16-71 |
DATA 구역을 지정한다.
|
72 |
Continuation 컬럼을 지정한다.
|
73-80 |
주석 또는 시퀀스 번호를 기술하는 부분이나 OpenFrame에서는 무시한다. |
2.4. 호출 결과
작업이 정상적으로 종료되면 PRINTDD에 호출 결과 정보가 출력된다. 출력되는 정보는 STATUS 기능에 설정에 따라 달라진다.
DFSDDLT0 Version 7.2.0(2) bmahn@:ofsrc7/ims(#1) 2018-01-29 23:27:45
191223 M DLT0001M =====< DFSDDLT0 EXECUTION BEGINS >=====
THIS IS TEST SAMPLE SAMPLE
*****************************************************************************************
PRINT CALL FUNTION INFORMATION
<<< CALL FUNCTION INFORMATION >>>
FUNCTION : GU
SSA : COL2 (COL2KEY = COL205)
<<< PCB INFORMATION >>>
DBPCB
D D L T D B D 0 2 G E A p . . . C O L 2 . . . . . . . . C O L 1 0 0 . . . . . . . .
44444C54444244203032 4745412020207008F0FF 434F4C32202020200000 000605000000434F4C31 30300000000000000000
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
00000000000000000000 00000000000000000000 00000000000000000000 00000000000000000000 00000000000000000000
. . .
000000
<<< RESULT INFORMATION >>>
COL2 STATUS CODE=GE(4745) L=000032 LEV=02 FC=GU
END OF THIS CALL FUNCTION
*****************************************************************************************
2.5. 사용예제
다음은 DBD가 DDLTDBD이고, PSB가 DDLTPSB인 데이터베이스에서 COL2KEY가 COL205인 COL2 세그먼트를 가져오는 예이다.
//DFSDDLT0 JOB MSGLEVEL=1,MSGCLASS=X,CLASS=A,REGION=4096K //TESTGU EXEC PGM=DFSRRC00,PARM='DLI,DFSDDLT0,DDLTPSB' //IMS DD DSN=IMS.PSBLIB,DISP=SHR // DD DSN=IMS.DBDLIB,DISP=SHR //PRINTDD DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * S 1 1 1 1 1 DDLTDBD 10000000 T THIS IS TEST GET UNIQUE 20000000 L GU COL2 (COL2KEY = COL205) 30000000 L GN COL2 40000000 U GET NEXT TEST 50000000 /*
다음은 DBD가 DDLTDBD이고, PSB가 DDLTPSB인 데이터베이스에 ISRT 함수를 사용하여 데이터를 입력하는 예제이다.
//DFSDDLT0 JOB MSGLEVEL=1,MSGCLASS=X,CLASS=A,REGION=4096K //TEST01 EXEC PGM=DFSRRC00,PARM='DLI,DFSDDLT0,DDLTPSB' //PRINTDD DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSIN DD * S 1 1 1 1 1 DDLTDBD 10000000 T THIS IS TEST SAMPLE 20000000 L ISRT COL1 30000000 L DATA COL100KKKK1234567890123456789012345678 40000000 L ISRT COL2 50000000 L DATA COL200HHHHAAAA123456789012345678 60000000 L ISRT COL2 70000000 L DATA COL201TTTTLLLL123456789012345678 80000000 L ISRT COL3 90000000 L DATA COL300ZZZZCCCC12 11000000 L ISRT COL3 12000000 L DATA COL301PZPZQNQN34 13000000 L ISRT COL4 14000000 L DATA COL400BBBB123456789012345678SSSS 15000000 U TEST DATA INSERT SUCCESSFUL 16000000 /*
3. DFSMVRC0
DFSMVRC0 유틸리티는 OpenFrame OSI의 Control region을 실행시키는 프로그램이다. OpenFrame OSI의 region 이름을 기재하여 해당 Region의 schedule 서버와 command 서버가 실행된다.
|
HiDB의 DFSMVRC0 유틸리티는 IBM DCCTL의 entry module인 DFSMVRC0 유틸리티에 대응한다. |
3.1. EXEC 설정
EXEC 문장의 설정은 다음과 같다.
EXEC PGM=DFSMVRC0, PARM=(regiontype, rgsuf, imsid)
전달할 수 있는 파라미터는 다음과 같다.
| 항목 | 설명 |
|---|---|
regiontype |
Control region을 실행하기 위해서 'CTL' 타입인지 확인한다. CTL 외의 값은 unknown region으로 에러 발생한다. |
rgsuf |
DFSPB***의 suffix로 IBM에는 DBC, DCC, IMS의 세 종류가 있으나, OpenFrame OSI에서는 IMS만 지원하므로 IMS를 기술하고 유틸리티 내부적으로는 형식적인 체크만 한다. |
imsid |
1~4byte의 OpenFrame OSI Control region의 ID를 명시한다. 'IMSID=id’의 형태로 ID 값을 지정한다. |
3.2. DD 설정
| 항목 | 설명 |
|---|---|
MODBLKSA, MODBLKSB |
OpenFrame OSI에서 지원하는 각종 리소스의 설정이 저장된 Staging Library 데이터셋의 이름을 설정한다. |
IMSACBA, IMSACBB |
ACB가 저장된 Staging Library 데이터셋의 이름을 설정한다. |
DFSRESLB |
OpenFrame OSI에서 사용되는 데이터셋의 동적 사용에 필요한 MDA 정보를 저장하는 라이브러리로 해당 데이터셋의 이름을 지정한다. |
MATRIXA, MATRIXB |
OpenFrame OSI에서 지원하는 Security 정보가 저장된 Staging Library 데이터셋의 이름을 설정한다. |
FORMATA, FORMATB |
MFS가 저장된 Staging Library 데이터셋의 이름을 설정한다. |
STEPLIB |
OpenFrame OSI에서 사용되는 애플리케이션 개발자가 작성한 프로그램의 Shared Object 형태 실행 모듈을 보관하는 데이터셋을 지정한다. |
QBLKS |
OpenFrame OSI에서 사용하는 MQ(Message Queue)의 데이터셋의 이름을 지정한다. |
MODSTAT |
동적 변경을 지원하는 데이터셋의 현재 ACT 데이터셋 정보를 담고 있는 데이터셋을 지정한다. |
SYSPRINT DD |
출력 데이터셋을 지정한다. |
4. DFSRRC00
DFSRRC00 유틸리티는 다른 HiDB 유틸리티 또는 shared object로 컴파일된 Batch 애플리케이션을 부가적인 파라미터 정보와 함께 실행하는 유틸리티 프로그램이다. Batch 환경에서 HiDB를 사용하는 모든 프로그램들은 DFSRRC00를 통해서 실행된다.
|
HiDB의 DFSRRC00 유틸리티는 IBM IMS/DB의 DFSRRC00 유틸리티에 대응한다. |
4.1. EXEC 설정
EXEC 문장의 설정은 다음과 같다.
-
-mode=BMP 이외의 경우
EXEC PGM=DFSRRC00, PARM=(mode, mbr, psb, buf, spie/test/excpvr/rst, prld, srch, ckptid,mon, loga, fmto, imsid, swap, dbrc, irlm, irlmnm, bko, iob, ssm, 'aparm', lockmax, gsgname, tminame, rrs, imsplex, rgsuf, dfsdf, 'parm1', 'parm2') -
-mode=BMP일 경우
EXEC PGM=DFSRRC00, PARM=(BMP, mbr, psb, in, out, opt/spie/test/dirca, prld, stimer, ckptid, pardli, cputime, nba, oba, imsid, agn, ssm, preinit, altid, 'aparm', lockmax, environ, jvmopmas)
전달할 수 있는 파라미터는 다음과 같다.
| 항목 | 설명 |
|---|---|
mode |
-mode=BMP 이외의 경우 DLI, MPP, ULU, UPB, UDR 등 실행할 프로그램의 HiDB 동작 환경을 지정한다. |
mbr |
응용 프로그램 이름을 기술한다. |
psb |
응용 프로그램이 사용하는 PSB 이름을 기술한다. |
ckptid |
Symbolic checkpoint와 extended restart 기능에서 사용되는 checkpoint id를 지정한다. |
|
이외의 파라미터는 HiDB에서 처리하지 않는다. |
4.2. DD 설정
DFSRRC00는 기본적으로 다른 유틸리티나 응용 프로그램을 실행하기 위한 유틸리티이기 때문에 DFSRRC00 만의 특수한 DD 설정 항목은 없으며, 공통된 DD 항목은 다음과 같다.
| 항목 | 설명 |
|---|---|
IMS DD |
IMS.DBDLIB, IMS.PSBLIB, GSAM 데이터셋과 같은 HiDB에서 사용되는 기본적인 데이터베이스 정보를 지정한다. |
STEPLIB |
OpenFrame OSI에서 사용되는 애플리케이션 개발자가 작성한 프로그램의 Shared Object 형태 실행 모듈을 보관하는 데이터셋을 지정한다. |
DFSRESLB |
OpenFrame OSI에서 사용되는 데이터셋의 동적 사용에 필요한 MDA 정보를 저장하는 라이브러리로 해당 데이터셋의 이름을 지정한다. |
SYSABEND, SYSUDUMP DD |
덤프 데이터셋을 지정한다. 둘 다 지정할 경우 나중에 지정된 쪽에 기록된다. |
SYSIN DD |
입력 데이터셋을 지정한다. |
SYSPRINT DD |
출력 데이터셋을 지정한다. |
5. IIUSTART
IIUSTART 유틸리티는 HiDB의 Secondary index table을 관리하기 위한 유틸리티이다.
-
Secondary index의 경우 대상이 되는 DBD에 존재하는 세그먼트들과 관련된 Index segment table에 데이터를 insert한다.
-
인덱스 이름을 지정하여 index segment table에 insert할 수 있다.
|
HiDB의 IIUSTART 유틸리티는 IBM IMS/DB의 IIUSTART 유틸리티에 대응한다. IBM IMS/DB의 IIUSTART의 경우 전체 인덱스를 생성하고 관리하지만, HiDB의 IIUSTART는 Secondary index table을 관리하기 위해 사용된다. |
5.2. DD 설정
DD 설정 항목은 다음과 같다.
| 항목 | 설명 |
|---|---|
IIUPRINT DD |
IIUSTART 유틸리티의 메시지가 출력된다. (필수 항목) |
IIUIN DD |
입력 컨트롤 문장이 담긴 데이터셋을 지정한다. (필수 항목) |
5.3. 명령어 설정
IIUSTART 유틸리티에서는 IIUIN에 입력된 컨트롤문을 사용하여 Index segment table에 데이터를 insert한다.
| 항목 | 설명 |
|---|---|
인덱스 처리 유형을 지정한다. |
|
지정한 INDEX만 처리하기 위해 지정하는 옵션이다. |
5.4. 호출 결과
작업이 정상적으로 종료되면 IIUPRINT DD에 호출 결과 정보가 출력된다.
IIUSTART Version 7.2.0(1) oftest@:ofsrc7/ims(#1) 2018-01-29 23:27:45
172116 M IST0001M =====< IIUSTART EXECUTION BEGINS >=====
----#1: SEG1(1:SEG111)
----#2: SEG2(1:SEG211)
----#3: SEG3(1:SEG311)
----#4: SEG3(2:SEG312)
----#5: SEG4(1:SEG411)
----#6: SEG2(2:SEG212)
----#7: SEG3(3:SEG313)
----#8: SEG3(4:SEG314)
----#9: SEG4(2:SEG412)
----#10: SEG4(3:SEG413)
----#11: SEG5(1:SEG511)
----#12: SEG1(2:SEG121)
----#13: SEG2(3:SEG221)
----#14: SEG3(5:SEG321)
----#15: SEG5(2:SEG521)
----#16: SEG1(3:SEG131)
----#17: SEG2(4:SEG231)
----#18: SEG5(3:SEG531)
----#19: SEG1(4:SEG141)
----#20: SEG2(5:SEG241)
----#21: SEG5(4:SEG541)
----#22: SEG1(5:SEG151)
----#23: SEG2(6:SEG251)
----#24: SEG5(5:SEG551)
******************************************************************************************
SUCCESS BUILD SECONDARY INDEX - DBDNAME is 'EXHIDAM'
******************************************************************************************
172116 M IST0002M =====< IIUSTART EXECUTION ENDS >=====
5.5. 사용예제
다음은 EXHIDAM DBD에 있는 Secondary index source segment와 관련된 Secondary index table에 데이터를 입력하는 예제이다.
//IIUALL JOB //STEP01 EXEC PGM=IIUSTART //IIUPRINT DD SYSOUT=* //IIUIN DD * PROC BLD_SECONDARY,EXHIDAM,ALL /*
다음은 EXHIDAM DBD에 있는 Secondary index source segment와 관련된 Secondary index table 중에 Index 이름이 EXHIIX2, EXHIIX5인 인덱스에 데이터를 입력하는 예제이다.
//IIUALL JOB //STEP01 EXEC PGM=IIUSTART //IIUPRINT DD SYSOUT=* //IIUIN DD * PROC BLD_SECONDARY,EXHIDAM,SELECT INDEX EXHIIX2,EXHIIX5 /*