IBM 기계 코드 프린터 제어 문자
IBM Machine Code Printer Control Characters초기 메인프레임 프린터는 대개 라인 프린터였습니다.라인 프린터에는, 인쇄 라인을 인쇄할 때에 용지가 어떻게 전개되는지를 제어하는 커맨드가 한정되어 있습니다.인쇄하는 어플리케이션 기입 리포트, 리스트 등은, 인쇄 데이터에 이러한 커맨드를 포함할 필요가 있습니다.이러한 단일 문자 인쇄 명령을 프린터 제어 문자라고 합니다.
Print Control 문자의 개요
프린터 제어 문자와 캐리지 제어 문자는 인쇄 가능한 텍스트 줄의 첫 번째 문자가 갖는 특별한 의미를 나타내는 IBM 메인프레임 용어입니다.각 텍스트 행의 첫 번째 문자는 인쇄 데이터 세트에 대응하는 속성이 설정되어 있는 경우(데이터 세트는 다른 운영 체제의 파일이라고 알려진 것을 메인프레임으로 말함) 인쇄되는 문자가 아닌 제어 문자 또는 프린터 명령어로 해석됩니다.
프린터 제어 문자 구조
라인 프린터는 나중에 전자 버전으로 대체되었지만 처음에는 천공된 종이 테이프를 사용하여 인쇄 중에 용지의 움직임을 제어했습니다.이 테이프는 캐리지 컨트롤 테이프라고 불리며 프린터에 장착되어 있습니다.루프가 있는 캐리지 테이프는 팬폴드 용지의 흐름과 동시에 이동합니다.
라인 프린터에는 캐리지 제어 테이프에서 12개의 독립 위치를 인식하기 위한 12개의 센서가 있습니다.각 위치를 채널이라고 하며, 번호는 1 ~12 입니다.채널에 구멍이 뚫린 경우, 이 구멍은 대응하는 채널 센서에 의해 감지될 때까지 빠르게 진행함으로써 프린터가 '점프'할 수 있는 위치를 페이지에 표시했습니다.이를 채널 번호n으로 건너뛰기라고 합니다.
명령어는 12개의 각 채널을 점프할 수 있도록 구현됩니다.빈 프린트 라인을 쓸 필요 없이, 현재 위치와 타깃 위치 사이에 아무것도 쓸 필요가 없는 경우, 애플리케이션은 미리 정의된 채널로 점프할 수 있기 때문에, 그 때 큰 퍼포먼스를 얻을 수 있습니다.
이러한 skip to channel 명령어 외에 프린터로 해석되는 명령어는 현재 행에 머무르거나 공백 1, 2, 또는 3 행에 머무르도록 되어 있습니다.현재 라인을 유지하면 다음을 만들 수 있습니다.
- 같은 텍스트를 같은 줄에 두세 번 다시 쓰는 굵은 글씨 텍스트.이 반복적인 인쇄로 잉크가 더 많이 묻었고, 이것은 일종의 굵은 글씨로 이어졌다.
- 밑줄 칠 텍스트를 쓴 후 원하는 위치에 밑줄을 그어 텍스트에 밑줄을 긋습니다.
- 스트로크할 텍스트를 쓴 후 원하는 위치에 대시 문자를 써서 텍스트를 통과시킵니다.
펀치가 없는 채널로 건너뛰도록 지시하면, 프린터는 고속으로 급지를 계속합니다.이 문제는 설치된 테이프와 응용 프로그램이 예상하는 테이프의 불일치가 원인일 수 있습니다.
채널 1의 특별한 의미
관례상 첫 번째 인쇄선을 써야 하는 용지의 위치는 채널 1과 관련되어 있다.예를 들어 텍스트의 첫 번째 행이 항상 특정 형식에서 물리적 행 3 위에 있어야 할 경우 캐리지 제어 테이프의 행 3에 채널 1 구멍을 뚫어야 합니다.
관례상 IBM 메인프레임 애플리케이션은 새로운 논리 페이지를 시작할 때 항상 채널 1로 이동합니다.
프린터 제어 문자 유형
IBM 메인프레임 운영 체제의 인쇄 데이터 세트에는 다음과 같은 두 가지 프린터 제어 문자가 있을 수 있습니다.
따라서 인쇄 제어 문자의 존재 여부를 지정하는 속성은 Record Format(RECFM) 속성의 일부로 다음 두 가지 변형을 허용해야 합니다.
- RECFM=..A에서는 데이터 세트에 ASA 제어 문자가 포함되어 있는 것을 지정합니다.
- RECFM=..M은 데이터 세트에 IBM 기계 제어 문자가 포함되도록 지정합니다.
ASA 제어 문자
ASA 제어 문자는 논리 프린터명령어입니다.그들은 현재의 텍스트 행을 인쇄하기 전에 용지를 얼마나 더 진행해야 하는지를 프린터에게 알려준다.ASA 제어 문자는 모두 표시 가능한 문자입니다.프린터는 이러한 문자 자체를 인식하지 않기 때문에, 프린터 드라이버는 인쇄 데이터를 프린터에 송신할 때에, 이러한 문자를 대응하는 프린터 커맨드로 변환할 필요가 있습니다.
IBM 기계 제어 문자
반면 기계 제어 문자는 IBM 라인 프린터가 인식하는 하드웨어 명령어입니다.그렇기 때문에 하드웨어에 의존하거나 하드웨어에 의존합니다.IBM은 라인 프린터에 대해 이 명령어 집합을 정의하고 모든 라인 프린터가 해당 명령어를 이해하도록 했습니다.다른 (메인프레임) 라인 프린터 제조원들도 프린터가 이러한 명령어를 이해하고 있는지 확인해야 했습니다.기계제어문자는 하드웨어 명령어이므로 그 대부분은 표시할 수 없는 문자이므로 기계제어문자는 항상 16진수치로 지정됩니다.
ASA와 머신 제어 문자의 주요 차이점
2 세트의 프린터 제어 문자의 주된 차이는 ASA 제어 문자의 이식성과 머신 제어 문자의 하드웨어 의존성입니다.ASA 컨트롤은 쓰기 전 공간인 반면 머신 컨트롤은 쓰기 후 공간인 경우 일부 데이터 스트림을 변환해야 할 수 있습니다.
프린터 제어를 위한 언어 지원
많은 프로그래밍 언어는 단순히 인쇄되는 행의 첫 번째 바이트에 원하는 제어 문자를 배치합니다.COBOL 및 PL/I는 시스템에 의존하지 않고 프린터 컨트롤을 지정할 수도 있습니다.컴파일러 또는 런타임은 이러한 옵션을 적절한 제어 문자로 변환합니다.
코볼
COBOL은 다음 구문을 사용합니다.WRITE record-name AFTER ADVANCING n Lines.여기서 record-name은 회선을 포함하는 영역의 이름이고 n은 회선의 수입니다.또한.BEFORE ADVANCING사용할 수 있습니다.BEFORE AFTER ADVANCING TOP새 페이지의 [1]맨 위로 건너뜁니다.
PL/I
PL/I는 다음 구문을 사용합니다.PUT SKIP(n) ...인쇄하기 전에 n 행을 건너뜁니다.PUT PAGE ...새 페이지로 건너뜁니다.
IBM 기계 인쇄 제어의 등장인물 목록
IBM은 두 세트의 프린터 명령을 정의했으며, 따라서 두 세트의 프린터 제어 문자를 사용할 수 있습니다.첫 번째 명령어 세트에서는 인쇄하는 데이터가 프린터에 송신되지 않고 용지 이동 명령만 송신되었습니다.이러한 명령어를 즉시 명령이라고 합니다.두 번째 명령어 세트는 현재 행에 인쇄되는 데이터와 용지 이동 명령을 프린터로 보냅니다.ASA 제어 문자와 달리 IBM 기계 인쇄 제어 문자는 먼저 현재 줄에 있는 데이터를 인쇄하고 다음으로 용지를 진행하도록 프린터에게 요구합니다.
즉시 명령어
이러한 명령어는 프린터로 데이터를 전송하지 않습니다.커맨드는, 용지를 전진시키도록 프린터에 요구할 뿐입니다.
| 제어 코드 | 액션. |
|---|---|
| x'03' | 조작 없음. |
| x'0B' | 공간 1행 즉시 |
| x'13인치 | 공간 2행 즉시 |
| x'1B' | 스페이스 3 라인 즉시 사용 |
| x'8B' | 채널 1로 바로 건너뜁니다. |
| x'93' | 채널 2로 바로 건너뜁니다. |
| x'9B' | 채널 3으로 바로 건너뜁니다. |
| x'A3' | 채널 4로 바로 건너뜁니다. |
| x'AB' | 채널 5로 바로 건너뜁니다. |
| x'B3' | 채널 6으로 바로 건너뜁니다. |
| x'BB' | 채널 7로 바로 건너뜁니다. |
| x'C3' | 채널 8로 바로 건너뜁니다. |
| x'CB' | 채널 9로 바로 건너뜁니다. |
| x'D3' | 채널 10으로 바로 건너뜁니다. |
| x'DB' | 채널 11로 바로 건너뜁니다. |
| x'E3' | 채널 12로 바로 건너뜁니다. |
write 및 space 명령어
write 명령어와 space 명령어는 프린터로 하여금 회선상에 데이터를 쓰도록 지시한 후 용지를 옮깁니다.
| 제어코드 | 액션. |
|---|---|
| x'01' | 공백 없이 쓰기 |
| x'09' | 쓰기 및 공백 1줄 |
| x'11' | 쓰기 및 공백 2줄 |
| x'19' | 쓰기와 공백 3줄 |
| x'89' | 쓰고 채널 1로 건너뜁니다. |
| x'91' | 쓰고 채널2로 건너뜁니다. |
| x'99' | 쓰고 채널 3으로 건너뜁니다. |
| x'A1' | 채널 4에 기입하여 건너뜁니다. |
| x'A9' | 채널 5에 기입하여 건너뜁니다. |
| x'B1' | 채널 6에 기입하여 건너뜁니다. |
| x'B9' | 채널 7에 기입하여 건너뜁니다. |
| x'C1' | 쓰고 채널8로 건너뜁니다. |
| x'C9' | 기입 후 채널 9로 건너뜁니다. |
| x'D1' | 쓰고 채널 10으로 건너뜁니다. |
| x'D9' | 쓰고 채널 11로 건너뜁니다. |
| x'E1' | 쓰고 채널 12로 건너뜁니다. |
「 」를 참조해 주세요.
레퍼런스
- 데이터 세트를 사용한z/OS DFSMS -> 옵션 제어 문자 사용
- z/OS용 PSF: 사용자 가이드 -> 라인 데이터 레코드에 캐리지 컨트롤 문자 사용
- "Advanced Function Presentation - Programming Guide and Line Data Reference -> Chapter 2. Line Data and MO:DCA (AFP) Data -> Line Data" (PDF). Archived from the original (PDF) on 2016-05-29.
- ^ IBM Corporation (August 2009). Enterprise COBOL for z/OS Language Reference (PDF). pp. 478–482. Retrieved June 30, 2020.