본 지침서에는 한글 OpenVMS 소프트 웨어의 개념과 특징, 명령어에 대한 설명이 수록되어 있습니다.
본 문서는 OpenVMS/Hangul V1.5 AXP용 OpenVMS Hangul 사용자 지침서를 대체합니다. |
|
기밀 컴퓨터 소프트웨어입니다. 소유, 사용 또는 복사를 위해서는 HP로부터 유효한 라이센스를 취득해야 합니다. FAR 12.211 및 12.212에 준거하여 상용 컴퓨터 소프트웨어, 컴퓨터 소프트웨어 문서 및 사용 항목의 기술 데이터에 대한 라이센스가 공급업체의 표준 사용 라이센스에 따라 미합중국 정부에 부여됩니다.
이 설명서의 내용은 예고 없이 변경될 수 있습니다. HP 제품과 서비스에 대한 보증은 오직 제품 및 서비스와 함께 제공되는 명시적 보증서만을 근거로 합니다. 이 설명서의 어떤 내용도 추가 보증 제정으로 해석할 수 없습니다. HP는 이 문서에 포함된 기술적 오류나 편집상의 오류에 대해 책임을 지지 않습니다.
Intel 및 Itanium은 미국과 기타 국가에서 Intel Corporation 또는 자회사의 상표 또는 등록 상표입니다.
4.2.3 APPEND, BACKUP, CONVERT, COPY, CREATE 및TYPE
명령에서의 한글 사용 4-2
4.2.4 ASSIGN, DEASSIGN 및 DEFINE 명령에서의 한글 사용 4-3
4.2.5 DIRECTORY 명령에서의 한글 사용 4-3
4.2.7 OpenVMS 도움말에서의 한글 사용 4-3
4.2.8 READ 명령과 WRITE 명령에서의 한글 사용 4-4
4.3 WWPPS(World-Wide PostScript Printing Subsystem) 4-5
10.1.1.1 사용자 시스템에 TFF의 설치 10-1
11.1.2 DECwindows Motif 사용자 인터페이스 11-2
A.2 DEC FORTRAN에서의 한글 사용 예 A-3
B.1.1 호출할 수 있는 HSYSHR 루틴의 사용 예 B-1
2-3 2-바이트 코드 표의 DEC 한글 문자 세트 2-3
5-1 /SYSTEM 및 /PERMANENT 한정자 사용시의 제한사항 5-4
7-1 HEVE의 사전 정의된 편집 키와 그 기능 7-2
이 지침서는 OpenVMS/Hangul 시스템 사용자를 위한 것입니다.
이 지침서는 10개의 장과 2개의 부록으로 구성되어 있습니다.
이 지침서의 2개 부록은 숙련된 사용자를 위한 것으로서, 관심있는 주제 사항을 제공합니다.
OpenVMS/Hangul은 기존의 OpenVMS 소프트웨어 기능의 최상위 버전으로서 한글 문자 처리 기능을 제공합니다. 사용자는 OpenVMS/Hangul의 다양한 기능들을 통하여 DEC 한글 코드와 함께 ASCII 코드도 처리할 수 있습니다.
OpenVMS/Hangul은 정보 교환을 위한 그래픽 문자 세트인 한국 표준(KS C 5601-1978)에 따르는 2-바이트 8비트 형식의 DEC 한글 데이터(한글 문자)를 지원합니다. DEC 한글 문자 세트에 대한 상세한 설명은 제2장을 참조하십시오.
OpenVMS/Hangul에서는, 대부분의 OpenVMS DCL 명령이 한글 문자를 지원합니다. 이들 명령에 대해서는 제 3, 4, 6, 7,8,9,10 및 11장에서 보다 상세히 설명되어 있습니다. 또한, 다양한 프로그래밍 언어로 작성된 프로그램들에서도 한글 문자를 사용할 수 있습니다. 이와 관련된 예제는 부록 A를 참조하십시오.
OpenVMS/Hangul은 다음과 같은 한글 문자를 처리할 수 있는 많은 유용한 유틸리티들을 제공합니다.
이 장에서는 DEC 한글 문자 세트의 구성에 대하여 설명합니다.
DEC 한글 문자 세트는 KS C 5601-1987 규격을 따르는 한글, 한자 및 특수 그래픽 문자들로 구성되는 기본 문자 세트입니다. 그림 2-1에 DEC 한글 문자 세트의 구성을 나타내었습니다.
한글 코드에서는 그래픽 문자를 2바이트로 표현합니다. 한글 코드
를 일반 ASCII 코드와 구분하기 위하여 첫번째 바이트와 두번째 바
이트의 최상위 비트(Most Significant Bit)를 1로 설정합니다.
OpenVMS/Hangul은 한글 문자의 단말기 입력과 출력을 위하여 다음의 기능들을 지원합니다.
OpenVMS/Hangul은 커서 이동, 삭제, 삽입, 겹쳐쓰기 및 행 끝에서의 줄 바꿔쓰기와 같이 OpenVMS에서 지원되는 모든 행 편집 기능들을 지원합니다. 이들 지원되는 기능들의 완전한 목록을 보려면,OpenVMS 자료를 참조하십시오.
단말기 화면에 표시되는 한글 문자는 2개 이상의 열을 차지합니다.따라서, OpenVMS/Hangul은 편집 기능에서 다음과 같이 2개의 동작 모드를 제공합니다.
이 모드에서는 삭제 키가 단말기 화면 상에서 한번에 1열 만을 삭제합니다. 커서이동 키는 한번에 1 화면표시 셀 만큼 이동합니다. 이 모드는 OpenVMS에서만 제공됩니다.
이 모드에서는 삭제 키가 한번에 한 자의 한글 문자를 삭제합니다. 커서 이동 키는 한 번에 한 자의 한글 문자만큼 이동합니다.단어 삭제 키(CTRL/J)는 한 개의 영어 단어나 또 는 한 개의 한글 문자열을 삭제합니다. 만일, 입력이 한 행의 끝 부분까지 다 채워지지 않은 상태에서, 채워지지 않고 남은 부분 보다 넓은 문자가 입력되는 경우(예를 들어, 행 끝에 1개의 화면표시 셀 밖에 여유가 없는데 한글 문자가 입력되는 경우)에는 입력문자가 무시됩니다.
HANGULGEN 유틸리티가 이들 두 가지의 편집 모드간을 전환하는데 사용됩니다. 모드 전환 명령에 대해서는 이 지침서의 제5장 HANGULGEN 유틸리티를 참조하십시오.
이 기능은 어플리케이션에서 규정된 규칙에 따라 입력 데이터를 검증합니다.
어플리케이션은 입력 필드를 2개 이상의 입력 영역으로 분리하는 표시기를 사용하여 입력 필드를 지정할 수 있습니다. KS C 5601-1987 문자 세트 내의 한글 문자가 표시기에 의해 정의된 경계에 걸치게 되는 경우(즉, 한글 문자가 다른 영역으로 삽입되기 위하여 두 개로 분리되어야 하는 경우) 이 문자는 무효로 간주됩니다.
이 기능은 HANGULGEN 유틸리티를 사용하여 명료하게 OFF시킬 수 있습니다. 또한 어플리케이션이 한번에 1 바이트씩 입력 데이터를 읽을 때에는 자동적으로 이 기능이 OFF됩니다.
이 장은 한글 단말기와 프린터에서 요구되는 장치 특성을 수록하고있으며, DCL 명령과 유틸리티에서의 한글 문자의 사용에 대하여 설명합니다.
이 절에서는 DCL 명령에서 한글 특성의 사용에 대하여 설명합니 다.
시스템 관련 정보를 화면에 한글로 표시하기 위하여 다음의 SHOW명령을 사용할 수 있습니다.
OpenVMS 도움말 메시지와 마찬가지로, SHOW LOGICAL 명령과 SHOW TRANSLATION 명령을 제외하고는 HANGULGEN 유틸리티를 사용하여 영어 또는 한글 메시지를 선택할 수 있습니다.
파일에 한글 데이터를 포함시킬 수 있습니다. 또한 APPEND, BACKUP, CONVERT, COPY, CREATE 및 TYPE 명령에 한글을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
논리명과 등가 문자열에 한글을 사용할 수 있습니다. 또한 ASSIGN, DEASSIGN 및 DEFINE 명령에서도 한글을 사용할 수 있습니다.
ASSIGN 명령과 DEFINE 명령을 사용하여 한글 문자로 정의된 논리명을 화면표시하기 위하여 SHOW LOGICAL 명령과 SHOW TRANSLATION 명령을 사용할 수 있습니다. 그리고, 렉시칼 함수F$LOGICAL은 한글로 변환될 수 있습니다. 예를 들면 다음과 같습니다.
DIRECTORY 명령에서는 2개 국어 시스템 메시지가 지원됩니다. HANGULGEN 유틸리티를 사용하여 영어 또는 한글 메시지를 선택할 수 있습니다.
메시지 파일의 기능 필드(facility field)와 원문에서 한글을 사용할수 있습니다. 그러나, 식별 필드(ident field)에서는 한글이 허용되지 않습니다.
HELP 명령 사용시 OpenVMS HELP 기능을 호출하여 OpenVMS 명령에 관한 정보를 화면에 표시하거나 또는 HANGULGEN 유틸리티를 사용하여 한글 또는 영어로 주제를 화면에 표시할 수 있습니다.
출력 장치가 HANGUL_MSG로 설정되어있다 하더라도 다음 명령을 사용하면 영어로된 도움말을 직접 화면표시할 수 있습니다.
데이터의 입력과 출력 원문에 한글 문자를 포함할 수 있습니다. 예를 들면 다음과 같습니다.
$ OPEN/WRITE OUTPUT HANGUL1.DAT
메시지 원문에 한글을 사용할 수 있습니다. 예를 들면 다음과 같습 니다.
$ REPLY/TERMINAL=TT "REPLY에 한글 문자 사용"
프롬프트 지정에 한글을 사용하거나 또는 명령 설명 파일의 동작어 에 한글을 사용할 수 있습니다. 그러나, 한정자나 레이블에는 한글 을 사용할 수 없습니다.
탐색될 문자열에 한글을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
WWPPS(World-Wide PostScript Printing Subsystem)는 Alpha와 I64 플랫폼 모두에서 일반 텍스트 파일에 대한 고품질의 인쇄 기능을 제공합니다. 이 유틸리티를 사용하면 단일 바이트와 다중 바이트의 아시아 문자로 구성된 일반 텍스트 파일을 한번에 인쇄할 수 있습니다. 유틸리티를 호출하려면 DCL 프롬프트에서 다음 명령을 사용하십시오.
또한, 다음과 같이 외부 명령을 정의하여 호출을 간략화할 수도 있습니다.
$ WWPPS := = $SYS$SYSTEM:WWPPS
WWPPS> PRINT/QUEUE=hp$printer/LOCALE=ko_kr_korean hangul-text_file.txt
$ WWPPS PRINT/QUEUE=hp$printer/LOCALE=ko_kr_korean-
HANGULGEN 유틸리티는 한글 단말기 유형을 설정하고 보여줍니다. 또한 사용자가 유틸리티 도움말 원문과 시스템 메시지에 사용할 언어를 선택하는 방법을 제공합니다.
HANGULGEN 유틸리티의 SET 명령과 SHOW 명령은 한글 단말기와 관련된 속성을 처리하는 것을 제외하고는 DCL 명령에서와 유사합니다.
SET 명령은 한글 단말기 특성을 설정합니다. 이러한 특성에는 장치 유형, 입력 유형 및 출력 유형이 포함됩니다. 영어 및 한글 도움말 /오류 메시지를 제공하는 유틸리티에서는, 해당되는 출력 유형을 지정하여서 출력 언어를 선택합니다.
SET [device-name[:]][/DEVICE_TYPE=device-type]
SHOW 명령은 한글 단말기 특성을 보여주는데, 각 장치 당 1 행씩 다음 필드들의 정보를 화면표시합니다.
HANGULGEN에서는 DOOSAN 220C와 VT382의 장치 유형이
_RTA2: HANGUL_VDU ASCIIH ANGUL_MSG
_RTA1: VT300_Series HANGUL Unknown
_RTA2: HANGUL_VDU ASCII HANGUL_MSG
_LTA5006: VT200_Series HANGUL Unknown
_LTA5007: HANGUL_VDU ASCII Unknown
_LAT5008: HANGUL_VDU ASCII Unknown
_TTA0: VT200_series ASCII ASCII_MSG
HANGULGEN> SET /DEVICE_TYPE=VT382
_TTA0:HANGUL_VDUHANGULHANGUL_MSG
HANGULGEN> SET TXA1: /DEVICE_TYPE=LA380 /PERMANENT
_TXA1: HANGUL_PRT HANGUL Unknown
_TXA2: HANGUL_VDU HANGUL ASCII_MSG
이 장에서는 HMAIL 유틸리티의 기능에 대해서 설명합니다.
OpenVMS MAIL 유틸리티에서 HMAIL의 추가 기능에 대해서는 다음의 소 절들에서 하나씩 설명합니다. OpenVMS MAIL의 기능에 대해서는 VMS 사용자 지침서를 참조하십시오.
HMAIL에서는 개인명에 한글을 사용할 수 있습니다. 예를 들어, 사용자 KIM이 파일 FILE.TXT를 한글 개인명 사용자 HANGUL::LEE 에게 발송하고자 하는 경우, 명령을 다음과 같이 입력할 수 있습니다.
HMAIL> set personal_name "김 영근, 컴퓨터실"
$ HMAIL/SUBJECT="Meeting Agenda" FILE.TXT HANGUL::LEE
또는 사용자 KIM이 한 개인명을 현재 메시지에만 적용되게 설정할 경우 명령을 다음과 같이 입력할 수 있습니다.
HMAIL> send/personal_name="김 영근, 컴퓨터실" file.txt
폴더명에 한글을 사용할 수 있습니다. 다음의 예들은 폴더명에 한 글을 사용하는 방법을 보여줍니다.
HMAIL에서는 SEARCH 명령과 SELECT, SET FOLDER, DIRECTORY 및 READ 명령의 /SUBJECT_SUBSTRING 한정자 같이 명령의 탐색 문자열에 한글을 사용할 수 있습니다.
%MAIL-I-SELECTED, 5 메시지가 선택되었습니다
HMAIL> directory/subject_substring=데이터베이스
HMAIL에서는 HTPU가 내정 편집기로 호출됩니다. 그러나, SET EDITOR 명령을 사용하여 이 내정값을 무시하고 다른 편집기를 선택할 수 있습니다. 예를 들어, 명령을 사용하여 내정 편집기를 다른 편집기로 설정하려면 다음과 같이 할 수 있습니다.
HMAIL> set editor [other editor]1
이 장에서는 HTPU/HEVE 유틸리티의 기능에 대하여 설명합니다.
HTPU와 HEVE는 HEDT의 편집 기능 외에, 한글 원문 편집을 지원하기 위해 DECTPU/EVE를 향상시킨 것입니다. 이것은 문자셀 단말기(CCT)와 DECwindows Motif/Hangul 사용자 인터페이스를 모두 지원합니다.
HTPU와 HEVE는, DECTPU/EVE에 기초하여 HTPU와 HEVE의 두 계층으로 구성되었습니다. HEVE는 HTPU가 제공하는 내장 프로시저를 통해 한글 편집 기능을 구현합니다.
CCT 인터페이스를 사용하는 내정 편집기로서 HEVE와 함께 HTPU를 호출하려면 다음과 같이 명령을 입력하십시오.
또한, 다음과 같이 외부 명령을 정의하여 간단하게 호출할 수도 있
DECwindows Motif/Hangul 인터페이스를 사용하는 내정 편집기로서 HEVE와 함께 HTPU를 호출하려면 다음과 같이 명령을 입력하십시오.
$ SET DISPLAY/CREATE/NODE=<사용자 워크스테이션의 노드명>
TEXT.TXT는 편집할 파일입니다. 일단 HEVE가 기동되면, 키보드의 키를 눌러서 원문을 입력할 수 있습니다. 또한, HEVE 명령과 사전 정의된 기능 키를 사용하여 문을 편집할 수 있습니다.
표7-1에 사전에 정의되어있는 키를 수록해 놓았습니다.
HEVE와 그 명령어들에 대한 자세한 내용을 보려면 HEVE 사용자 지침서를 참조하거나 또는 HEVE 내에서 DO 키를 누른후 HELP를 입력하십시오.
HTPU는 일단의 내장 프로시저와 한글 편집기를 개발하기 위한 호 출식 인터페이스를 제공합니다. 사용자는 HTPU의 내정 편집기인 HEVE와 같이 HTPU 언어만으로 작성된 사용자 편집기와 그것의내장 프로시저를 가지거나 또는 호출식 인터페이스를 통하여 사용자의 어플리케이션 프로그램으로부터 HTPU를 호출할 수 있습니다.
DECTPU에 대하여 HTPU의 향상된 기능은 다음과 같습니다.
신규 및 수정된 내장 프로시저의 자세한 목록은 HTPU/HEVE 참조서를 살펴보십시오. DECTPU 내장 프로시저에 대한 상세한 사항은 DEC Text Processing Utility Reference Manual을 참조하십시오. Guide to the DEC Text Processing Utility에서는 HTPU 언어를 설명하고 있습니다.
HTPU 호출식 인터페이스에 고유한 정보는 이 책의 부록 B.4에 있습니다. DECTPU의 호출식 인터페이스에 대해서는 VMS Utility Routines Manual의 제14장을 참조하십시오.
HTPU 언어와 내장 프로시저를 구성할 때에, HEVE는 ASCII 문자와 함께 한글 문자도 편집할 수 있습니다. HEVE는 EVE2의 모든 기능을 제공하는 외에 다음의 확장된 기능도 가지고 있습니다.
HDUMP는 DUMP의 한글 버전입니다. 이것은 DUMP 유틸리티에 DEC 한글 문자 세트 내의 파일 내용의 화면표시와 인쇄 기능을 보강하여 향상시킨 것입니다.
HDUMP와 DUMP 간의 주요 차이점은 HDUMP가 2 바이트 한글 문자를 화면표시할 수 있다는 점입니다. DUMP는 행에 1 바이트만 남아 있는 상태에서 2 바이트의 한글 문자가 오는 상황을 처리하지 못합니다. 이 경우, DUMP는 한글 문자의 첫번째 바이트만을 행에 남기고 두번째 바이트는 다음 행으로 넘깁니다. 따라서, 오류 결과를 야기합니다. 그러나, HDUMP에서는 어떠한 상황에서도 해당 한글 문자의 첫번째 바이트를 두번째 바이트와 함께 다음 덤프 행 (dump line)으로 넘기고, 화면 표시 필드의 왼쪽 여백에서 한 개의 ASCII 문자 자리를 줄여서 화면표시 또는 인쇄됩니다.
적합한 한글 범위를 벗어나는 모든 2-바이트 코드는 마침표(.)로 화면표시 또는 인쇄됩니다.
미국 DEC 컴퓨터 주식회사 전화 번호:662-5211
미국 DEC 컴퓨터 주식회사 전화 번호: 662-5211
WRKD$:[HANGUL.SRC]KOREAN.DAT;1 파일 덤프 9-DEC-1992 19:22:28.64
파일 ID (8433,4,0) 파일 끝 블록 1 / 할당량 3
레코드 번호 1 (00000001), 48 (0030) 바이트
BBC7C4C4 20C3A3C5 A3C4A320 B9B1CCB9 미국 DEC 컴퓨000000
FCC02020 20E7BBB8 C8C4BDD6 C120CDC5 터 주식회사 전 000010
31313235 2D323636 3AA3C8F8 B920ADC8 화 번호:662-5211 000020
레코드 번호 2 (00000002), 45 (002D) 바이트
20CDC5BB C7C4C420 43454420 B9B1CCB9 미국 DEC 컴퓨터 000000
20ADC8FC C0202020 E7BBB8C8 C4BDD6C1 주식회사 전화 000010
이 장에서는 한글 날짜 및 시각의 지원에 대하여 설명합니다.
입력 및 출력 형식에서 한글 날짜 및 시각이 지원됩니다. 한글 언 어 표 및 미리 정의되어있는 일-시 출력 형식을 사용할 수 있습니 다. 시스템과 사용자 프로세스가 서로 맞게 설정되어 있는 경우에 는 DCL 명령 DIR 및 DCL 유틸리티 MAIL과 HMAIL에서 한글 일-시 출력 형식을 사용할 수 있습니다. 뿐만 아니라, 사용자 자신의 일 -시 입/출력 형식을 정의할 때에도 한글 언어표를 사용할 수 있습니다. 이 일-시 입/출력 형식은 OpenVMS RTL의 일-시 처리 루틴에서 사용가능합니다. 일-시 처리 루틴과 그 사용법에 대해서는 VMS RTL Library(LIB$) Manual을 참조하십시오.
한글 일-시를 사용하려면, 그 전에 먼저 시스템 관리자(또는 CMEXEC, SYSNAM 및 SYSPRV 특권이 있는 사용자)가 명령 프로시저 SYS$MANAGER:LIB$DT_STARTUP.COM을 실행하여 일-시를 위한 몇가지 출력 형식(미리 정의된 한글 출력 형식 포함)을 정의해 주어야 합니다. 그리고, 한글 일-시의 항목을 정의해 주어야 합니다. 이에 대한 명령 사용 예는 다음과 같습니다.
$ ! Define Korean output formats and date and time
$ @SYS$MANAGER:LIB$DT_STARTUP.COM
이상적으로, 상기 명령은 OpenVMS/Hangul 시스템에서는 SYSTARTUP_VMS.COM에서 실행되어야 합니다.
다음의 표는 사전에 정의된 한글 일-시의 출력 형식을 보여줍니다.
표에 사용된 연상 코드(mnemonics)에 대해서는 VMS RTL Library(LIB$) Manual을 참조하십시오.
한글 언어표는 몇 개의 논리명을 정의합니다. 이 논리명은 9.6절에
서 설명하는 사용자 정의 출력 형식에서 사용될 수 있습니다. 참조
를 위하여 이들 논리명을 보면 다음 페이지와 같습니다.
"1 월","2 월","3 월","4 월","5 월","6 월","7 월","8 월","9 월","10 월","11 월","12 월" |
||
날짜, 시각 또는 그 둘 모두에 특유한 한글 형식을 선택하려면, 9.3절에서 정의한 논리명을 사용하여 LIB$DT_FORMAT 논리명을 정의해야 합니다. 예를 들면 다음과 같습니다.
$DEFINE LIB$DT_FORMAT LIB$DATE_FORMAT_046 , LIB$TIME_FORMAT_023
위의 두 개의 논리명의 순서는 그것들이 출력되는 순서를 결정합니 다. 위와 같이 정의하면 ,아래와 같이 지정된 형식으로 날짜가 출 력되고, 그 다음에 한 개의 공백과, 지정된 형식의 시각 순서로 출 력됩니다.
사용자는 자신의 실행 모드 논리명을 정의하여 자신의 출력 형식을 한글로 정의할 수 있습니다. 예를 들면 다음과 같습니다.
$ DEFINE/EXEC/TABLE=LNM$DT_FORMAT_TABLE LIB$DATE_FORMAT_601 -
_$ "시스템시간: !Y4 년 !MNB 월 !DB 일 "
$ DEFINE/EXEC/TABLE=LNM$DT_FORMAT_TABLE LIB$TIME_FORMAT_601 -
_$ "!MIU !HB2 시 !MB 분 !SB 초 !WU"
원하는 형식을 정의한 후에, 사용자는 다음의 명령들을 사용할 때 에 그 형식을 사용할 수 있습니다.
$ DEFINE LIB$DT_FORMAT LIB$DATE_FORMAT_601,LIB$TIME_FORMAT_601
어플리케이션에서 사용할 날짜 및 시각 입력 전용의 한글 형식을 선택하려면, LIB$DT_INPUT_FORMAT 논리명을 정의해야 합니다. 이 때, LIB$DT_INPUT_FORMAT의 등가명으로는 9.4절에서 설명한 사전 정의된 한글 언어표로부터 연상코드를 포함시킬 수 있습니다.
생성일: 1992 년 11 월 15 일 목요일 오후 6 시 35 분 25 초
개정일: 1992 년 11 월 15 일 목요일 오후 6 시 35 분 28 초 (1)
파일 속성: 할당: 3, 확장: 0, 글로벌 버퍼 수: 0, 버전 한계 없음
레코드 속성: Carriage return carriage control
파일 보호: System:RWED, Owner:RWED, Group:RE, World:
TEST.DAT;1 1992 년 11 월 15 일 화요일 오후 6 시 35 분 25 초
TEST1.DAT;1 1992 년 11 월 15 일 화요일 오후 6 시 36 분 19 초
TEST2.DAT;1 1992 년 11 월 15 일 화요일 오후 6 시 36 분 22 초
TEST3.DAT;1 1992 년 11 월 15 일 화요일 오후 6 시 36 분 26 초
int lib$convert_date_string();
unsigned int quadtime[2];/* quadword to store time */
unsigned char instr[40]; /* input date time buffer */
unsigned char outstr[40];/* output date time buffer */
struct dsc$descriptor_s indate = /* input descriptor */
{ 40, DSC$K_DTYPE_T, DSC$K_CLASS_S, instr };
struct dsc$descriptor_s outdate = /* output descriptor */
{ 40, DSC$K_DTYPE_T, DSC$K_CLASS_S, outstr };
outdate.dsc$a_pointer = outstr;
/* convert date time from input format to quadword storage */
lib$convert_date_string(&indate,quadtime);
/* convert date time from quadword to output format */
lib$format_date_time(&outdate,quadtime);
printf("Output date time: %40.40s \n",outstr);
$ DEFINE LIB$DT_FORMAT LIB$DATE_FORMAT_047,LIB$TIME_FORMAT_023
$ DEFINE LIB$DT_INPUT_FORMAT -
_$"!Y4 년 !MNB 월 !DB 일 !MIU!HB2 시 !MB 분 !SB.!C2 초 "
Input date time:1992 년 10 월 11 일 오후2 시 16 분 26.02초
Output date time: 1992 년 10 월 11 일 화요일 오후 2 시 16 분 26 초
$ DEFINE LIB$DT_INPUT_FORMAT -
_$"!Y4 년 !MAU 월 !DB 일 !HB4 시 !MB 분 !SB.!C2 초 "
Input date time:1992 년 10 월 11 일 17 시 12 분 22.02 초
이 장에서는 TFF 2-바이트 문자 변환표를 사용하기 위하여 시스템을 설정할 때의 단말기 폴백 기능(TFF) 유틸리티의 사용법에 대하여 설명합니다.
단말기 폴백 기능(TFF)은 DOOSAN 문자세트(2-바이트로만 구성)만을 화면표시할 수 있는 DOOSAN 단말기에서 문자 변환을 지원하도록 확장되었습니다. 이는 DOOSAN 220 단말기가 단말기로/부터의 문자 전환을 통하여 KS C 5601-1987 문자 세트에서 한글 문자(한자는 지원되지 않음)의 입/출력을 가능하게 합니다. 문자 변환은 문자표를 통하여 어플리케이션 소프트웨어에 명료하게 수행됩니다. 따라서, DOOSAN 문자 세트 단말기를 사용하는 사용자는 OpenVMS/Hangul 상에서 KS C 5601-1987 문자 세트를 사용하여 개발된 소프트웨어를 사용할 수 있습니다.
TFF에 관한 보다 상세한 사항은 VMS Terminal Fallback Utility Manual을 참조하십시오.
이하의 소절들에서는 OpenVMS/Hangul 운영체제 상에서 TFF를 사용 할 수 있기 전에, 사용자가 수행해야 하는 기본적인 단계를 서술합니다. TFF 환경의 설정과 유지보수 방법에 관해서는 VMS Terminal Fallback Utility Manual을 참조하십시오.
사용자의 시스템에 OpenVMS/Hangul을 설치한 후에는 TFF를 가동시켜야 합니다. TFF를 가동시키려면, 사용자 시스템 디스크 상의 디렉토리 SYS$MANAGER에 위치한 TFF$STARTUP.COM을(VAX 시스템에서) 또는 TFF$SYSTARTUP.COM 명령 프로시저를(Alpha에서) 호출해야 합니다.
시스템이 재시동될 때마다 TFF가 가동되게 하려면, OpenVMS/Hangul에서는 SYS$MANAGER:SYSTARTUP_VMS.COM 사이트 특정 기동 명령 프로시저를 편집하여 다음의 명령을 포함시키십시오.
TFF 폴백 표인 HANGUL_DS는 DOOSAN 문자 세트만을 화면표시할 수 있는 DOOSAN 220 단말기에서 KS C 5601-1987 문자 세트를 지원하기 위하여 제공됩니다.
TFF가 시스템에서 가동된 후에는, 사용자가 액세스하기 전에 비페이지형 동적 기억장소 영역(nonpaged dynamic memory pool)에 있는 시스템의 물리적인 기억장소에 필요한 폴백표를 로드해야 합니다. 이를 위해서는, 사용자가 직접 단말기 폴백 유틸리티(TFU)를 사용하여 표를 라이브러리에 포함시킨 후, 그 표를 시스템의 물리적인 기억장소에 로드시켜야 합니다. HANGUL_DS를 로드하는 명령은 다음과 같습니다.
VAX/VMS Terminal Fallback Facility (TFF)
OpenVMS 디버거는 기호 디버거로서 사용자 모드 코드를 디버깅하는 데 주로 사용됩니다. 문자 셀 사용자 인터페이스나 그래픽(DECwindows Motif) 사용자 인터페이스를 통해 모든 OpenVMS 프로그래밍 언어에 대한 기호 디버깅을 지원합니다. 두 사용자 인터페이스 모두는 DEC 한글 문자 세트의 입력과 화면표시를 지원합니다. 프로그램 변수, 소스 코드 주석 또는 OpenVMS 디버거 오류 메시지에서의 한글 문자는 바르게 표시됩니다.
OpenVMS 디버거에서의 DEC 한글 문자 세트 지원은 XPG4 국제화 모델로 구현되었습니다. 이 로캘 데이터베이스는 OpenVMS와 함께 제공되는 OpenVMS I18n 저장 세트에 있습니다. |
이 절에는 OpenVMS 디버거의 DECwindows Motif 사용자 인터페이스와 문자 셀 사용자 인터페이스를 모두 한글 문자로 설정하는 방법이 설명되어 있습니다.
OpenVMS 디버거의 문자 셀 사용자 인터페이스는 DEC 한글 문자 세트를 지원하기 위해 한글 SMG와 DEC C's XPG4 로컬라이제이션 유틸리티를 함께 사용합니다. 다음 논리명이 정의되어야 DEC 한글 문자 세트 지원이 가능합니다.
이 논리명은 OpenVMS 디버거가 화면 모드 지원을 위해 사용하는 SMG 공유 가능 이미지의 이름을 정의합니다. DEC 한글 문자 세트가 지원되도록 하려면 이 논리명을 다음과 같이 정의하십시오.
$ DEFINE/JOB DBG$SMGSHR HSMGSHR
이 논리명은 한글 SMG가 지원하는 기본 문자 세트를 정의합니다. DEC 한글 문자 세트가 지원되도록 하려면 이 논리명을 다음과 같이 정의하십시오.
$ DEFINE/JOB SMG$DEFAULT_CHARACTER_SET HANGUL
이 논리명은 DEC C's XPG4 로컬라이제이션 유틸리티 및 런타임 라이브러리의 모든 로캘 범주에 대한 기본 로캘 설정을 정의합니다. DEC 한글 문자 세트가 지원되도록 하려면 이 논리명을 다음과 같이 정의하십시오.
OpenVMS 디버거의 DECwindows Motif 사용자 인터페이스는 DEC 한글 문자 세트의 문자를 표시할 수 있습니다. 디버거의 리소스 파일인 VMSDEBUG.DAT는 DECW$SYSTEM_DEFAULT 또는 DECW$USER_DEFAULTS 디렉토리에 있으며 각 디버거 윈도우에 대한 글꼴을 명시적으로 지정할 수 있습니다. VMSDEBUG.DAT에 있는 DebugDefault.font 리소스는 모든 디버거 윈도우에 대한 기본 글꼴을 지정합니다. 또한 각 윈도우는 이 기본값과 다른 글꼴을 사용할 수도 있습니다. 자세한 내용은 VMSDEBUG.DAT 파일을 참조하십시오.
OpenVMS 디버거 윈도우에서 DEC 한글 문자 세트 지원을 작동시키려면 해당 윈도우가 DEC 한글 문자 세트 글꼴을 사용해야 합니다. 다음 방법 중 하나를 사용해 글꼴을 지정합니다.
OpenVMS/Hangul에서는 주석, 문자 및 문자열에 한글을 사용할 수 있고, 언어에서 한글 데이터를 입/출력 처리할 수 있습니다.
일반적인 프로그래밍 언어에서의 한글 사용을 보여주는 예제 프로그램들을 다음의 소절들에 수록하였습니다. 이 예제 프로그램들은£¬OpenVMS/Hangul 시스템의 HSY$EXAMPLE 디렉토리에 있습니다.
; If you want to compile this example
; with MACRO-32, then the VAX_MARCO symbol
; must be set to 0. Otherwise, you may
; encounter a problem during compilation.
DATA1: .ASCID /VAX MACRO 한글 문자로 사용/
DATA2: STRING <VAX MACRO 데이터에 한글 사용>
.ENTRY SAMPLE, ^m<> ; 주석에 한글 사용.
.CALL_ENTRY PRESERVE=<R2,R3,R4,R5,R6,R7,R8,R9,R10,-
sample:proc options (main); /* 주석에 한글 사용 */
put list ('VAX PL/I 한글 문자로 사용');
put skip edit ('데이터 입력: ') (a);
HSYSHR은 OpenVMS/Hangul 시스템의 한글 처리 런타임 라이브러리에 포함되어 있습니다. 이 라이브러리는 기본적인 한글 처리 함수를 제공하는 루틴들을 포함하고 있는 범용 라이브러리입니다.
라이브러리에서 제공되는 온라인 도움말은 시스템에서 사용할 수 있습니다. 이들 루틴의 함수, 호출 형식, 인수 전달 방법 및 복귀값에 관한 보다 상세한 정보를 보려면 다음 명령을 입력하십시오.
런타임 라이브러리는 공유 이미지 라이브러리 HSYIMGLIB.OLB에 있습니다. 이들 라이브러리 함수는 OpenVMS/Hangul이 지원하는 모든 프로그래밍 언어에서 호출할 수 있습니다. 프로그램을 런타임 라이브러리에 링크시키려면 다음 명령을 입력하십시오.
$ LINK PROGRAM, SYS$LIBRARY:HSYIMGLIB/LIB
상세한 사항은 OpenVMS/Hangul RTL Korean Processing (HSY$) Manual을 참조하십시오.
$ TYPE HSY$EXAMPLE:SAMPLE_HSYSHR.C
This is a C language example to demonstrate the ability
of the HSY$ facility of the OpenVMS Run time Library,
HSYSHR. The program accepts an input file from the
command line and formats the text within it in the
- Left margin = 0, Right margin = 40
- Convert all half form ASCII characters to their full forms.
- Remove leading and trailing blanks of each input line.
- Remove all embedded controls or space charact
typedef unsigned char mstr; /*Local language string type*/
typedef unsigned char *mstr_p; /*Pointer type to local */
typedef unsigned long mchar; /*Multi-byte character type*/
! It simply prints out the integer parameter int_param
! and the string parameter str_param by means of
buffer_desc : BLOCK [8, BYTE],
! Form a fixed-length string descriptor
buffer_desc [DSC$W_LENGTH] = 80;
buffer_desc [DSC$B_DTYPE] = DSC$K_DTYPE_T;
buffer_desc [DSC$B_CLASS] = DSC$K_CLASS_S;
buffer_desc [DSC$A_POINTER] = buffer;
! Construct the ini_param message and print it out
status = $FAO ($DESCRIPTOR('Integer: !UL'), buffer_len,
buffer_desc [DSC$W_LENGTH] = .buffer_len;
status = tpu$message (buffer_desc);
buffer_desc [DSC$W_LENGTH] = 80;
! Construct the str_param message and print it out
status = $FAO ($DESCRIPTOR('String: !AF'), buffer_len,
buffer_desc, .str_param [DSC$W_LENGTH],
buffer_desc [DSC$W_LENGTH] = .buffer_len;
status = tpu$message (buffer_desc);
buffer_desc [DSC$W_LENGTH] = 80;
! We need to use lib$sget1_dd to allocate the memory
! for the return string since TPU useslib$sfreel_dd
! to free our string when it needs to.
str_out_len = %CHARCOUNT(%STRING('Success'));
status = ;ob$sget1_dd (str_out_len, str_out [0,0,0,0]);
! Perform editing to the buffer
status = tpu$execute_command ($DESCRIPTOR(command));
! It first copies two lines to the MAIN buffer
$test_execute ('COPY_TEXT("This is the first statement");
$test_execute ('COPY_TEXT("This is the second statement");
한글 화면 관리 런타임 라이브러리 HSMGSHR은 OpenVMS/Hangul 시스템에 포함되어 있습니다. 이 라이브러리는 영상 화면 상의 이미지의 설계, 구성 및 트랙 유지를 보조하는 일단의 루틴입니다.
화면 관리 기능은 두 가지의 중요한 서비스, 즉 단말기 독립성과 구성의 용이성을 제공합니다.
이들 라이브러리 함수는 OpenVMS/Hangul이 지원하는 모든 프로그래밍 언어에서 호출 할 수 있습니다. 프로그램을 런타임 라이브러리에 링크시키려면 다음 명령을 입력하십시오.
$ LINK PROGRAM, SYS$INPUT/OPTION
상세한 사항은 VMS RTL Korean Screen Management (SMG$) Manual을 참조하십시오.
호출식 HTPU 루틴을 사용하면, 모든 프로그래밍 언어와 어플리케이션에서 HTPU를 액세스할 수 있습니다. HTPU는 OpenVMS Procedure Calling and Condition Handling Standard를 사용하여 호출을 생성하는 모든 프로그래밍 언어로 작성된 프로그램에서 호출될 수 있습니다. 또한, HMAIL같은 OpenVMS 유틸리티에서도 HTPU를 호출할 수 있습니다. 호출식 HTPU를 사용하면 사용자의 프로그램 내에서 한자 원문 처리 기능을 수행시킬 수 있습니다.
HTPU는 DECTPU에서 지원하는 호출식 인터페이스 Simplified Callable Interface 및 Full Callable Interface 모두를 동일하게 지원합니다. DECTPU의 호출식 인터페이스에 대한 상세한 사항은 VMS Utility Routines Manual의 14장을 참조하십시오.
HTPU와 DECTPU 호출식 인터페이스의 차이점을 요약하면 다음과 같습니다.
다음의 호출식 루틴들은 HTPU 동작시 사용할 수 있습니다.
이 루틴이 사용자 호출 루틴 내에서 호출되는 시점과 사용자 호출 루틴의 복귀 시점 동안에 단말기에 연결된 HTPU 채널을 닫습니다. |
|
CLI$DCL_PARSE를 사용하여 명령을 해석한 후에, TPU$INITIALIZE에 대한 항목 목록을 구성합니다. |
다음은 Full Callable Interface를 사용하여 HTPU를 호출하기 위한 BLISS로 작성된 예제 프로그램입니다.
! Example program of using HTPU full callable interface.
! 2. $ LINK EXAMPLE,SYS$INPUT/OPTION
! 3. $ DEFINE HTPU$TESTING <your directory>
ADDRESSING_MODE (EXTERNAL = GENERAL)) =
! To test the callable interface of HTPUSHR
TEST_USER_ARG = %X'F0'; ! an arbitrary pattern
test_callback, ! Callback for tpu$initialize
test_call_user, ! Call user routine
tpu$fileio, ! HTPU file routine
tpu$message, ! Displays HTPU message
tpu$cliparse, ! HTPU CLI parser
tpu$initialize, ! Initialize HTPU
tpu$execute_inifile, ! Execute initial commands
tpu$execute_command, ! Execute HTPU statements
tpu$control, ! HTPU main control loop
callback_bpv : BLOCK [8, BYTE],
! Setup the callback procedure
$test_set_bpv (callback_bpv, test_callback);
! Set the user argument for test_callback, but ignored
! Initialize HTPU. Initialization options are specified
status = tpu$initialize (callback_bpv, .user_arg);
! Set up the default section file
status = tpu$execute_inifile();
! Finally, we clean up the HTPU and then return
cleanup_flag = tpu$m_delete_context;
RETURN tpu$cleanup (cleanup_flag);
ROUTINE test_callback (user_arg) =
! Sets up the item list for tpu$initialize
call_user_bpv : BLOCK [8, BYTE],
$test_set_bpv (fileio_bpv, tpu$fileio);
$test_set_bpv (call_user_bpv, test_call_user);
! Calls tpu$cliparse to construct item list for
! tpu$intialize passing it tpu$fileio as the fileio
! routine and test_call_user as the call_user routine
$DESCRIPTOR ('HTPU htpu$testing:test.txt'),
ROUTINE test_call_user (int_param,
str_param : REF BLOCK [,BYTE],
str_out : REF BLOCK [,BYTE]) =
! It simply prints out the integer parameter int_param
! and the string parameter str_param by means of
buffer_desc : BLOCK [8, BYTE],
! Form a fixed-length string descriptor
buffer_desc [DSC$W_LENGTH] = 80;
buffer_desc [DSC$B_DTYPE] = DSC$K_DTYPE_T;
buffer_desc [DSC$B_CLASS] = DSC$K_CLASS_S;
buffer_desc [DSC$A_POINTER] = buffer;
! Construct the ini_param message and print it out
status = $FAO ($DESCRIPTOR('Integer: !UL'), buffer_len,
buffer_desc [DSC$W_LENGTH] = .buffer_len;
status = tpu$message (buffer_desc);
buffer_desc [DSC$W_LENGTH] = 80;
! We need to use lib$sget1_dd to allocate the memory
! for the return string since TPU uses lib$sfree1_dd
! to free our string when it needs to.
str_out_len = %CHARCOUNT(%STRING('Success'));
status = lib$sget1_dd (str_out_len, str_out [0,0,0,0]);
! Perform editing to the buffer
status = tpu$execute_command ($DESCRIPTOR (command));
! It first copies two lines to the MAIN buffer
$test_execute ('COPY_TEXT("This is the first statement"
$test_execute ('COPY_TEXT("This is the second statement