Map 컴파일 및 배치
본 장에서는 실제로 작성된 Map Source Code를 이용해서 맵을 컴파일하여 Symbolic Map과 Physical Map을 생성하고 시스템에서 사용할 수 있도록 적절한 위치에 배치하는 법을 다룬다.
1. Map 컴파일
Map Source Code로부터 애플리케이션에서 사용하는 Symbolic Map과 OSC 애플리케이션 서버에서 사용하는 Physical Map을 얻기 위해서는 Map Source Code를 컴파일하는 과정이 필요하다.
맵 컴파일과 관련된 툴은 mscasmc와 mscmapc이다.
컴파일 툴 | 설명 |
---|---|
맵에 있는 덤프용 어셈블러 매크로 명령어를 전처리한다. |
|
Map Source Code를 컴파일하여 Symbolic Map과 Physical Map 파일을 생성한다. |
실제 Map 컴파일 예제는 본 안내서의 Map 생성을 참고한다. |
1.1. mscasmc
mscasmc는 맵에 있는 덤프용 어셈블러 매크로 명령어를 전처리하는 툴이다. 실제로 화면에 영향을 미치고 맵을 정의하는 부분 외에 덤프용으로 쓰여지는 매크로들이 있는데, 가령 PRINT ON, NOGEN, TITLE 같은 매크로들은 mscasmc 툴을 사용하여 전처리를 한다.
사용법
mscasmc를 실행하는 방법은 다음과 같다.
Usage: mscasmc [options] file | mscasmc -o output_file file
-
[options]
옵션 설명 [-d]
컴파일 대상 파일의 전처리 과정을 출력하면서 컴파일하므로 해당 소스가 처리되는 방법 및 에러 발생 위치를 바로 확인할 수 있다.
[-h]
프로그램 사용을 위한 자세한 사용법을 출력한다.
[-v]
mscasmc의 버전 정보를 출력한다.
-
입력 항목
항목 설명 file
전처리하려는 맵 파일의 이름을 지정한다.
-o output_file
전처리된 결과를 저장할 출력 파일을 사용자가 지정한다.
사용예제
다음은 SCSOW03.map 파일의 덤프용 어셈블러 매크로 명령어를 전처리하는 예이다.
$ mscasmc SCSOW03.map
위의 명령어를 실행한 후 다음과 같은 메시지가 출력되면서 컴파일이 된다.
MSCASMC : input map : SCSOW03.map MSCASMC : file[SCSOW03.map.atm] create ok.
1.2. mscmapc
mscmapc 툴은 Map Source Code를 컴파일하여 Symbolic Map과 Physical Map 파일을 생성하는 툴이다.
Symbolic Map은 애플리케이션에서 사용하는 데이터의 구조가 정의되어 있는 COBOL Copybook 파일이고, Physical Map은 맵을 구성하는 각 필드들의 속성과 데이터 변환에 필요한 정보들을 저장하고 있는 바이너리 파일이다.
사용법
mscmapc를 실행하는 방법은 다음과 같다.
Usage: mscmapc [options1] file | mscmapc [options2] dir file
옵션 | 설명 |
---|---|
[-d] |
컴파일할 소스의 전처리 과정을 출력한다. 전처리 과정을 보면서 컴파일을 수행하기 때문에 에러가 발생할 경우 에러 탐지가 용이하다. |
[-o dir] |
Symbolic Map과 Physical Map이 생성되는 디렉터리를 지정한다. |
[-p 1|2] |
에뮬레이터에 나오는 화면을 미리 보여준다.
|
[-r region] |
Symbolic Map과 Physical Map을 생성할 Region 이름을 지정한다. 지정된 Region의 osc.{servername} 서브젝트, GENERAL 섹션의 MAPDIR 키의 VALUE 항목에 설정된 디렉터리 하위에는 Physical, Symbolic 디렉터리가 생성되어 있어야 정상 동작한다. |
[-s file] |
Symbolic Map 파일을 생성할 때 지정된 파일 이름으로 생성한다. |
[-h] |
프로그램 사용을 위한 자세한 사용법을 출력한다. |
[-v] |
mscmapc의 버전 정보를 출력한다. |
사용예제
다음은 CESN.map 파일을 컴파일한 후 Symbolic Map과 Physical Map 파일을 현재 디렉터리에 생성하는 예이다.
$ mscmapc CESN.map >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> * input map : CESN.map * Copybook : [./CESN.cpy] create. * binary image : [./CESN.phm] create. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2개의 파일이 정상적으로 만들어졌다는 메시지를 통해 성공적으로 컴파일이 완료된 것을 확인할 수 있다.
다음은 -o 옵션을 사용하여 CESN.map 파일을 컴파일한 후 Symbolic Map과 Physical Map 파일을 지정한 디렉터리에 생성하는 예이다.
$ mscmapc -o $OPENFRAME_HOME/osc/map CESN.map >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> * input map : CESN.map * Copybook : [/home/oframe/OpenFrame/osc/map/CESN.cpy] create. * binary image : [/home/oframe/OpenFrame/osc/map/CESN.phm] create. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
다음은 -r 옵션을 사용하여 CESN.map 파일을 컴파일한 후 Symbolic Map과 Physical Map 파일을 Region 디렉터리에 생성하는 예이다.
$ mscmapc -r OSC00001 CESN.map >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> * input map : CESN.map * Copybook : [/home/oframe/OpenFrame/osc/region/OSC00001/map/symbolic/CESN.cpy] create. * binary image [/home/oframe/OpenFrame/osc/region/OSC00001/map/physical/CESN.phm] create. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2. Map 배치
mscmapc 툴을 통해 생성된 Symbolic Map과 Physical Map이 애플리케이션 컴파일이나 OSC 애플리케이션 서버에서 사용되기 위해서는 생성된 파일들을 각각 적절한 위치에 배치하는 과정이 필요하다. 본 절에서 실제로 각각의 맵 파일을 위치시키고 실제 시스템에서 사용할 수 있도록 하는 방법에 대해서 설명한다.
2.1. Symbolic Map 배치
Symbolic Map은 맵에 대응되는 애플리케이션에서 사용할 데이터 구조를 선언하는 파일이며, 애플리케이션 프로그램이 컴파일될 때 copybook 형태로 컴파일 과정에 관여하게 된다. 따라서 Symbolic Map은 COBOL 컴파일러가 참조할 수 있는 copybook 디렉터리에 위치해야 한다.
Map Source Code를 mscmapc로 컴파일할 때 [–o] 옵션이나 [–r] 옵션의 유무에 따라 Symbolic Map의 위치가 달라진다.
-
두 옵션 모두 주어지지 않았을 경우
mscmapc를 실행시킨 경로에 Map Source Code에 선언된 각각의 맵 셋 이름과 일치하는 .cpy 확장자를 가진 Symbolic Map 파일이 생성된다. 생성된 Symbolic Map을 실제로 이용하기 위해서는 COBOL 컴파일러가 참조할 수 있는 copybook 디렉터리로 이동시켜야 한다. 여러 Map Source Code에 동일한 맵 셋 이름이 있을 경우 동일한 경로에서 맵을 컴파일하면 나중에 생성된 Symbolic Map 파일이 이전에 생성된 파일을 덮어쓰므로 주의해야 한다.
-
옵션이 주어졌을 경우
-
[–o] 옵션이 주어졌을 경우
Map Source Code에 선언된 각각의 맵 셋 이름과 일치하는 .cpy 확장자를 가진 Symbolic Map 파일이 해당 옵션에 설정된 경로에 생성된다. 생성된 Symbolic Map을 실제로 이용하기 위해서는 COBOL 컴파일러가 참조할 수 있는 copybook 디렉터리로 이동시켜야 한다. 여러 Map Source Code에 동일한 맵 셋 이름이 있을 경우 동일한 경로를 지정하면 나중에 생성된 Symbolic Map 파일이 이전에 생성된 파일을 덮어쓰므로 주의해야 한다.
-
[–r] 옵션이 주어졌을 경우
OpenFrame 환경설정에 osc.{servername} 서브젝트, GENERAL 섹션의 MAPDIR 키의 VALUE 항목이 설정되어 있을 경우에는 MAPDIR 디렉터리 아래의 symbolic 디렉터리에, MAPDIR 항목이 설정되지 않은 경우에는 ${OPENFRAME_HOME}/osc/region/Region이름/map/symbolic 경로에 자동적으로 Symbolic Map 파일을 배치시킨다.
[-r] 옵션을 통해 생성된 Symbolic Map을 사용하기 위해서는 아래의 2가지 방법을 권장한다.
-
환경변수 설정 이용
COBOL 업무를 컴파일하는 스크립트에서 COBOL 컴파일러에서 copybook 경로를 지정하는 환경변수값에 Symbolic Map 파일이 생성된 경로를 설정한다. MF-COBOL의 경우 $COBCPY라는 환경변수에 copybook 파일이 위치하는 경로를 지정할 수 있다.
-
전처리기 옵션 이용
osccobprep의 [–f] 및 [–p] 옵션을 통해서 Symbolic Map 파일이 위치하는 경로를 설정하여, Symbolic Map 파일의 내용이 애플리케이션 프로그램 소스 코드에 포함되도록 전처리한다.
-
-
앞에서 설명한 방법 외에 미리 지정된 컴파일러의 copybook 파일 경로에 생성된 Symbolic Map 파일을 복사할 수 있다. 그러나 이 방법은 위의 [–o] 옵션을 사용했을 때와 동일한 문제점이 발생할 수 있으므로 권장하지 않는다. |
2.2. Physical Map 배치
Physical Map 파일은 OSC 애플리케이션 서버에서 사용되며, 특정 Region에서 사용될 Physical Map 파일은 반드시 Region 별로 지정된 경로에 배치되어야 한다.
Physical Map 파일의 배포 위치는 Region 설정 중 GENERAL 섹션의 MAPDIR 키의 VALUE 항목이 설정되어 있을 경우에는 MAPDIR 디렉터리 아래의 physical 디렉터리 경로로 설정된다. MAPDIR 키의 VALUE 항목이 설정되지 않은 경우에는 $(OPENFRAME_HOME)/osc/region/Region이름/map/physical 경로로 설정된다. 따라서 시스템에서 맵을 사용하려면 컴파일된 Physical Map을 위의 경로에 위치시켜야 한다.
Physical Map의 경우에도 Symbolic Map과 동일하게 Map Source Code를 컴파일할 때 mscmapc 툴의 [–o] 옵션 및 [–r] 옵션의 유무에 따라 맵 파일의 위치가 달라진다.
-
두 옵션 모두 주어지지 않았을 경우
mscmapc를 실행시킨 경로에 맵 셋 이름으로 Physical Map 파일이 생성된다. 생성된 파일이 정상적으로 사용되려면 해당 맵을 사용하려는 OSC Region의 Physical Map 디렉터리로 이동시켜야 한다.
-
옵션이 주어졌을 경우
-
[-o] 옵션이 주어졌을 경우
해당 옵션에 설정된 경로에 맵 셋 이름으로 Physical Map 파일이 생성된다. 생성된 파일이 정상적으로 사용되려면 해당 맵을 사용하려는 OSC Region의 Physical Map 디렉터리로 이동시켜야 한다.
-
[-r] 옵션이 주어졌을 경우
자동으로 해당 Region의 Physical Map 배치 디렉터리에 맵 셋 이름의 Physical Map 파일이 생성된다. Physical Map 파일의 배포가 동시에 이루어지므로 파일을 다른 경로로 이동시킬 필요는 없다. 다른 Region에서 사용하기 위해서는 생성된 파일을 다른 Region의 Physical Map 디렉터리로 복사해야 한다.
-
3. Map 동적 업데이트
OSC 시스템이 운영 중인 상황에서 맵을 업데이트해야 하는 경우가 발생할 수 있다. 이러한 경우를 위해서 OpenFrame OSC에서는 mscmapupdate라는 동적 맵 관리 툴을 제공한다.
3.1. mscmapupdate
mscmapupdate는 OSC Region이 사용하는 맵 셋의 정보를 동적으로 관리하는 툴로서, 사용자가 업무 진행 중에 맵 정보를 변경하여 바로 반영하거나 추가 로딩할 수 있다. 그 외에 현재 메모리에 저장된 맵 셋의 조회, 삭제 기능을 제공한다. 멀티 클러스터링 환경에서도 동적 관리가 가능하다.
사용법
mscmapupdate을 실행하는 방법은 다음과 같다.
Usage: mscmapupdate [options] | mscmapupdate region | mscmapupdate region -f filename | mscmapupdate region -l mapset [-n] | mscmapupdate region -r mapset [-n]
-
[options]
옵션 설명 [-h]
프로그램 사용을 위한 자세한 사용법을 출력한다.
[-v]
mscmapupdate의 버전 정보를 출력한다.
[-n]
맵 셋을 업데이트하는 경우 동일한 Region이 기동하고 있는 모든 노드에 반영한다.
-
입력 항목
항목 설명 region
OSC Region에 등록된 맵 셋 정보를 출력한다.
-f filename
업데이트할 Physical Map 파일명을 지정하여 OSC Region 메모리에 로드한다. 기존에 동일한 맵 셋이 로드되어 있다면 새로운 데이터로 업데이트한다.
-l mapset
업데이트할 맵 셋 이름을 지정하여 OSC Region 메모리에 로드한다. 기존에 동일한 맵 셋이 로드되어 있다면 새로운 데이터로 업데이트한다.
-r mapset
OSC Region에서 해당 맵 셋을 삭제한다.
사용예제
다음은 OSC00001 Region에 등록된 맵 셋의 정보를 출력하는 예이다.
$ mscmapupdate OSC00001 * loaded mapset list 0001 : mapset[CESN] 0002 : mapset[OIVPMS1]
다음은 OSC00001 Region에 OIVPMS1 맵 셋을 업데이트하는 예이다. 맵을 삭제하는 경우 -r 옵션을 사용하여 동일하게 지정한다.
$ mscmapupdate OSC00001 -l OIVPMS1
다음은 OSC00001 Region이 기동된 모든 노드에 OIVPMS1 맵 셋을 업데이트하는 예이다. 맵을 삭제하는 경우 -r 옵션을 사용하여 동일하게 지정한다.
$ mscmapupdate OSC00001 -l OIVPMS1 -n