메뉴 정의체
본 장에서는 메뉴 정의체의 특징 및 메뉴 정의체를 통한 논리 화면의 액세스에 대해 설명한다.
1. 메뉴 정의체의 특징
메뉴 정의체는 구분 데이터 셋(PDS)의 멤버이며 논리 화면상의 필드를 가시적인 형태로 정의할 수 있다.
사용자가 작성하는 메뉴 정의체는 텍스트 파일 형태의 문서이나 OpenFrame에서는 tsomapgen이라는 컴파일 툴을 사용하면, menuname .map(컴파일할 메뉴 정의체의 이름.map) 형태의 바이너리 파일로 컴파일 및 저장해 놓고 이후 IPF 프로그램에서 해당 파일에서 필요한 정보를 읽어들여 사용한다.
2. 메뉴 정의체의 구성
2.1. 속성 정의부
속성(attribute) 정의부는 속성 문자를 변경 또는 추가하거나 속성 문자에 또 다른 속성을 추가하는 경우에 사용한다. 표준 속성 문자만을 사용하는 경우에는 생략이 가능하다. 속성 정의부는 <ATTR>로 시작하여 <END>로 끝난다.
다음은 형식에서 사용하는 표준 속성 문자와 속성 기호에 대한 설명이다.
-
표준 속성 문자
항목 설명 ^
입력 필드의 속성을 가진다. 눈에 보이지 않는 필드이다.
%
입력 필드의 속성을 가진다. 밝게 표시된다.
|
입력 필드의 속성을 가진다. 어둡게 표시된다.
&
텍스트 필드의 속성을 가진다. 밝게 표시된다.
₩(통화기호)
텍스트 필드의 속성을 가진다. 어둡게 표시된다.
#
출력 필드의 속성을 가진다. 밝게 표시된다.
@
출력 필드의 속성을 가진다. 어둡게 표시된다.
-
속성 기호
항목 설명 A
refresh를 하는 경우 데이터를 유지한다.
B
깜빡거리는 효과를 준다.
D
눈에 보이지 않는 필드이다.
E
refresh를 하는 경우 데이터를 삭제한다.
H
밝게 표시되는 필드이다.
I
입력 필드이다.
J
오른쪽 정렬이 되는 필드이다.
N
숫자만 사용 가능한 필드이다.
O
필드에 over line을 표시한다.
P
출력만 가능한 필드이다.
R
필드 내의 데이터는 어둡게, 그 외의 필드 영역은 밝게 표시한다.
U
필드에 under line을 표시한다.
V
필드에 vertical line을 표시한다.
속성 정의부는 다음의 형식으로 설정이 가능하다. 각각의 형식을 여러 줄에 걸쳐서 함께 사용할 수 있다.
-
형식 1
-
사용법
임의의 문자 = 표준 속성 문자 [+ 속성 기호];
우변에 기술된 표준 속성 문자의 속성을 좌변에 기술된 임의의 속성 문자로 옮긴다. 필요한 경우 또 다른 속성을 추가할 수도 있다. 속성이 옮겨진 표준 속성 문자는 기존의 속성이 사라지며 이후 메뉴 원형부에서는 일반 데이터용 문자로 사용할 수 있다.
-
예제
<ATTR> X = % + OUV; <END>
X라는 문자를 새로운 속성 문자로 정의한다. 표준 속성 문자인 %의 속성을 X에 부여하고 over line(O), under line(U), vertical line(V) 속성을 추가한다. 이후부터는 %를 속성 문자로 사용할 수 없다.
-
-
형식 2
-
사용법
표준 속성 문자 =+ 속성 기호;
우변에 기술된 속성 기호의 속성을 좌변에 기술된 표준 속성 문자에 추가한다.
-
예제
<ATTR> @ =+ JN; <END>
표준 속성 문자인 '@'에 오른쪽 정렬 속성(J)과 숫자 필드 속성(N)을 추가한다.
-
-
형식 3
-
사용법
임의의 문자 =+ 속성 기호;
우변에 기술된 속성 기호의 속성을 좌변에 기술된 임의의 속성 문자에 추가한다. 이때 사용된 임의의 문자는 속성 문자로서 기능하기 때문에 이후 메뉴 원형부에서는 일반 데이터용 문자로 사용할 수 없다.
-
예제
<ATTR> Y =+ IOUV; <END>
Y라는 새로운 속성 문자를 정의하면서 입력 필드(I), over line(O), under line(U), vertical line(V) 등의 속성을 부여한다.
-
2.2. 메뉴 원형부
메뉴 원형부는 속성 문자, 텍스트 데이터 및 파라미터명(필드명)으로 구성되며, 화면에 실제로 출력되는 영역이다. 속성 문자는 1byte의 영역을 차지하며 필드의 단락 및 뒤에 나오는 필드의 속성을 정의한다.
텍스트 데이터는 그대로 메뉴 원형부에 기술할 수 있으며 화면의 동일한 위치에 출력된다. 데이터 입력 또는 출력을 위한 필드에는 각각에 대한 파라미터명(필드명)을 기술하여 응용 프로그램과 화면 사이에서 데이터를 주고 받는 역할을 한다. 이러한 입출력 필드에 대해서는 메뉴 원형부 뒤에 나오는 액션 정의부에서 보다 상세하게 정의한다.
다음은 메뉴 원형부의 몇가지 특성이다.
-
메뉴 원형부는 필드들의 모임이다.
-
한 행에 여러 필드가 이어질 수는 있지만 한 필드가 여러 행에 걸쳐 이어질 수는 없다.
-
하나의 필드는 하나의 속성 문자와 그 다음 속성 문자 사이의 문자열이다.
-
필드 내의 문자열은 텍스트 데이터이거나 파라미터명 혹은 필드명, 그리고 그에 따른 공백열로 구성된다.
-
표시 데이터는 1byte 문자열이거나 2bytes(일본어) 문자열, 또는 1byte와 2bytes가 혼합된 문자열이다.
-
여기서 파라미터명이란 액션 정의부에서 기술되는 파라미터명을 의미하고, 필드명은 액션 정의부의 FIELD 오퍼랜드에 기술되는 필드명을 의미한다.
2.3. 액션 정의부
액션 정의부에서는 메뉴 원형부에서 지정된 입출력 필드 파라미터에 대해 상세한 속성을 정의한다. 입출력 필드 파라미터는 응용 프로그램에서 지정된 MDA 데이터를 통해 전달받으며 사용하지 않는 파라미터에 대해서는 생략이 가능하다. 액션 정의부는 <ACTION>으로 시작하고 <END>로 끝난다.
액션 정의부는 다음과 같이 구성된다.
파라미터번호 {파라미터명*} {CHAR(n) | NCHAR(n) | FIXED(n) | DEC(n[,pos])} [LIST(d1) RETURN(d2)] [INIT(초기값 | \PARMn)] [FIELD(필드명)] [CURSOR] [IMAGE] [/* 주석 */]
다음은 액션 정의부의 각 오퍼랜드에 대한 설명이다.
항목 | 설명 |
---|---|
파라미터 번호 |
메뉴 정의체의 모든 파라미터에 대해서 부여되는 번호로, 1부터 시작하며 연속해서 이어진다. 액션 필드의 파라미터 번호의 순서는 응용 프로그램에서 전달하는 데이터의 순서이며 메뉴 정의체 상의 순서와는 상관 없다. |
파라미터명 |
메뉴 정의체의 파라미터에 부여하는 이름으로, 메뉴 원형부의 동일한 이름을 갖는 필드와 매칭된다. |
* |
MDA와 데이터가 대응할 때 입출력의 대상으로 취급하지 않는 데이터를 애스터리스크(*)로 선언한다. |
CHAR(n) |
nByte 길이의 캐릭터 라인 필드를 의미한다. |
NCHAR(n) |
일본어 데이터(2bytes) 필드를 의미한다. 이때 길이(n)는 일본어의 문자수이며, 실제 길이는 2 x nbyte가 된다. |
FIXED(n) |
signed 또는 unsigned의 정수형 필드를 의미한다. 자릿수(n)는 15, 16, 31, 32로 한정되며 15, 31은 signed, 16, 32는 unsigned 정수이다. |
DEC(n[,pos]) |
signed 10진 고정소수점 데이터를 나타낸다. 자릿수(n)는 15, 7로 한정된다. 소수점 지정 인수(pos)는 데이터 오른쪽 끝에서부터 n만큼의 소수점 위치를 나타낸다. 생략하는 경우에는 0이 된다. |
LIST(d1) RETURN(d2) |
LIST에 지정된 d1이 입력되었을 때 RETURN에 지정된 d2를 응용 프로그램으로 반환한다. |
INIT |
표시할 데이터가 없는 경우 다음에 설정된 값으로 데이터를 초기화한다.
|
FIELD |
메뉴 원형부상에 파라미터명이 아닌 본 오퍼랜드에서 지정된 필드명이 명시되어 있는 것을 나타낸다. OpenFrame에서는 파싱만 지원한다. |
CURSOR |
커서를 설정할 필드를 나타낸다. 이 오퍼랜드가 생략된 경우에는 첫 번째 입력 필드에 커서를 위치시킨다. |
IMAGE |
FIXED 또는 DEC로 정의된 파라미터의 숫자 데이터를 화면상에 표현하는 형식을 다음과 같은 문자열로 지정할 수 있다.
|
주석 |
액션 정의부에 주석을 기술할 수 있다. 주석문은 '/*'와 '*/' 사이에 기술하며 그 내용에 '/*' 또는 '*/'을 포함할 수 없다. |
3. tsomapgen
tsomapgen은 텍스트 파일로 작성된 최초 메뉴 정의체 파일을 파싱하고 컴파일하여 바이너리 파일의 형태로 저장하는 툴이다. TSOMGR나 IPF 서브루틴에서 메뉴 정의체를 참조하는 경우 컴파일된 맵 파일을 읽어들여서 정보를 가져온다.
-
사용법
tsomapgen의 사용 형식은 다음과 같다.
uasage : tsomapgen [options] menuname
-
[options]
옵션 설명 -m program
컴파일할 때 필수 옵션으로 컴파일할 메뉴 정의체의 종류를 지정한다.
tsomapgen으로 컴파일할 수 있는 메뉴 정의체에는 IPF 맵이 있다.
[-l pdsname ]
컴파일된 맵 파일이 저장될 위치를 지정한다.
맵 파일은 구분 데이터 셋(PDS)의 멤버로 저장된다. 이 옵션을 생략하면 기본값으로 컴파일 명령을 실행하는 현재 디렉터리가 지정된다.
[-c]
컴파일할 때 DEC로 지정된 파라미터의 메뉴 필드의 길이와 액션 필드의 image 데이터 길이를 비교하고 다를 경우에 경고 메시지를 출력한다.
[-d]
디버그 모드로 컴파일한다. 컴파일된 맵 파일의 구조체에 저장된 정보를 출력한다.
-v mapfile
컴파일과는 관련 없는 옵션이며 이미 컴파일된 맵 파일의 버전 정보를 출력한다.
[-h]
tsomapgen의 사용법을 출력한다.
-
입력 항목
항목 설명 menuname
컴파일할 메뉴 정의체의 이름을 지정한다.
컴파일된 맵 파일은 {menuname}.map의 형태로 저장된다.
-