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에 기술된 문장은 위치에 따라 다음의 내용을 의미한다. 지원하는 기능의 파라미터에 대해서만 기술하였다.
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에서는 무시한다. |
COMMENT 문
출력 데이터에 주석을 출력한다.
-
조건부 COMMENT
-
호출 당 최대 5개의 조건부 COMMENT 문을 사용할 수 있다.
-
컬럼 72에는 Continuation 표시가 필요하지 않다.
-
Status 문의 컬럼 3의 값에 따라 출력 여부를 제어한다.
-
-
무 조건부 COMMENT
-
제한없이 여러 개 사용 할 수 있다.
-
위치 | 설명 |
---|---|
1 |
T 또는 U 중에 하나가 입력되어야 한다.
|
2-72 |
Comment 내용을 기술한다. |
73-80 |
주석 또는 시퀀스 번호를 기술하는 부분이나 OpenFrame에서는 무시한다. |
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에서는 무시한다. |
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만 처리하기 위해 지정하는 옵션이다. |
PROC 문
PROC 문은 인덱스 처리 유형을 지정한다. IIUSTART에서는 Secondary index insert를 위한 BLD_SECONDARY 옵션만 지원한다. BLD_PRIMARY, BLD_ILDS는 지원하지 않는다.
PROC BLD_SECONDARY,dbname1,{ALL|SELECT}
INDEX 문
INDEX 문은 지정한 INDEX만 처리하기 위해 지정하는 옵션이다.
PROC 문에서 SELECT 옵션을 필수로 지정해야 한다. PROC 문에서 ALL 옵션을 사용하면, INDEX 문은 무시된다.
indexname은 최대 32개까지 지정할 수 있다.
INDEX indexname[,indexname[,...]]
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 /*