화면 처리 응용

본 장에서는 화면 입출력 기능의 응용에 대해 설명한다. 물리 화면에 대응하는 표준 논리 화면보다 크거나 작은 논리 화면의 구성이 가능하며, 이를 통해 단순히 데이터의 입출력만이 아니라 화면에 대한 조작을 할 수 있다.

1. LSDA

IPFOPN/IPFOVS를 처리할 때 논리 화면의 속성을 정의하는 파라미터인 LSDA(Logical Screen Data Area)를 통해 논리 화면의 속성을 정의할 수 있다. 이 파라미터를 생략한 경우에는 표준 논리 화면의 속성이 적용된다.

LSDA의 설정을 통해 다음과 같은 기능을 할 수 있다.

  • 논리 화면을 물리 화면보다 크게 만들 수 있다.

  • 화면 분할을 통해 화면의 레이아웃을 자유롭게 설계할 수 있다.

  • 스크롤이 가능한 부분에 대해 화면상에 고정 영역을 설정할 수 있다.

  • 화면 이동 폭을 자유롭게 설정할 수 있다.

LSDA에서 설정한 위와 같은 기능들은 IPFOPN/IPFOVS가 한번 호출되면 이후에 변경할 수 없으므로 신중하게 설정할 필요가 있다. LSDA로 설정하는 항목들은 다음의 12가지로 각 항목들은 LSDA에서 각각 2bytes의 영역을 차지한다.

항목 설명

SIZE1

논리 화면의 행의 크기

SIZE2

논리 화면의 열의 크기

HARD1A

하드웨어 표시 영역 (행의 시작 위치)

HARD1B

하드웨어 표시 영역 (행의 종료 위치)

HARD2A

하드웨어 표시 영역 (열의 시작 위치)

HARD2B

하드웨어 표시 영역 (열의 종료 위치)

SCR1

화면 이동 폭 (행 방향)

SCR2

화면 이동 폭 (열 방향)

NOT1

화면 고정 영역 (행 위치)

NOT2

화면 고정 영역 (열 위치)

DISP1

물리 화면과의 차이 (행 방향)

DISP2

물리 화면과의 차이 (열 방향)

LSDA를 생략하지 않은 경우에는 논리 화면의 크기, 하드웨어 표시 영역은 반드시 지정해야 한다. 그 외의 경우 0을 지정하면 표준 화면과 같은 값으로 설정된다.

2. 화면 분할

화면 분할은 물리 화면에 복수의 논리 화면을 출력하는 것이다. LSDA를 통해 각각의 화면 크기 속성을 정의할 수 있다.

2.1. 복수의 논리 화면

2개 이상의 논리 화면을 차례로 오픈하는 것으로, 물리 화면을 분할해 논리 화면을 할당할 수 있다. 먼저 하나의 화면을 오픈한 후, 그 위의 일부 영역에 다음 화면을 오픈해서 덮어쓰는 방식으로 복수의 논리 화면을 출력하는 것이 가능하다.

화면을 분할하는 경우에는 표시할 각각의 논리 화면의 크기를 LSDA의 하드웨어 표시 영역(HARD1A, HARD1B, HARD2A, HARD2B)에 지정한다.

2.2. 분할된 화면 식별

분할된 화면은 논리 화면 식별 영역(LSIA)에 의해 식별된다. 따라서 복수개의 논리 화면을 사용할 때는 복수개의 LSIA가 필요하다. 즉 논리 화면과 LSIA는 1대 1로 대응해야 한다. 이미 오픈된 논리 화면에 대응하는 LSIA를 사용해서 다른 논리 화면을 오픈할 수 없으며 종료된 논리 화면에 대응하는 LSIA는 재사용이 가능하다.

3. 화면 이동(스크롤)

물리 화면의 크기에 대응하는 표준 논리 화면의 크기는 가로 최대 길이가 80, 세로 최대 길이가 24로 제한된다. 논리 화면의 크기를 물리 화면 크기보다 크게 설정한 경우, 표시 영역을 초과하는 부분은 화면에 한 번에 표시할 수 없다. IPF에서는 지정된 function key의 입력을 통해 논리 화면상의 출력 위치를 이동시킬 수 있다.

3.1. 화면 이동 기능

물리 화면의 크기보다 논리 화면의 크기가 더 큰 경우, 물리 화면은 논리 화면의 모든 내용을 표시할 수 없다. 이러한 경우 표시되지 않은 부분을 표시하는 기능이 화면 이동 기능이다.

화면 이동 기능은 상/하/좌/우의 4방향으로 실시할 수 있으므로 이 기능을 이용하면 큰 논리 화면도 물리 화면의 표시 영역을 통해 출력하거나 입력 처리를 할 수 있다. LSDA의 SCR1과 SCR2에 지정된 숫자만큼 각각 행 방향과 열 방향으로 화면 이동을 실시한다.

3.2. 화면 이동 Function key

IPF에서는 다음의 Function key들을 화면 이동 키로 지정하고 있다.

Function key 설명

PF7, PF19

윗 방향

PF8, PF20

아랫 방향

PF10, PF22

왼쪽 방향

PF11, PF23

오른쪽 방향

4. 화면 고정

논리 화면의 크기를 물리 화면 크기보다 크게 설정한 경우 화면 이동 기능을 사용할 수 있다. 이때 모든 화면을 이동하지 않고 일부 화면은 고정시킬 수 있다.

다음은 화면 고정 규칙이다.

  • 표준 논리 화면이거나 LSDA의 화면 고정 영역의 값이 0인 경우에는 화면 고정 영역이 없다.

  • LSDA의 화면 고정 영역 파라미터 중 NOT1은 1행에서부터 행의 개수를 의미하며, NOT2는 1열에서부터 열의 개수를 의미한다.