디지털 명령어
DIGITAL Command Language![]() OpenVMS Alpha 8.4-2L1 터미널 세션의 DCL CLI 표시 | |
패러다임 | 필수적 |
---|---|
설계자 | 디지털 이그니션 코퍼레이션[1] |
개발자 | VMS 소프트웨어 주식회사(VSI)[2] |
OS | RSTS/E, RSX-11, RT-11, OpenVMS, VAXELN, MICA |
영향받은 | |
Windows PowerShell |
DIGITAL 명령어(DCL)는 Digital Equipment Corporation이 개발한 많은 운영 체제에서 채택된 표준 명령어입니다.DCL은 IAS, TOPS-20 및 RT-11에 뿌리를 두고 있으며, 특히 RSX-11과 RST/E의 대부분의 디지털 운영 체제에서 표준으로 구현되었지만 VAX/VMS(나중에 OpenVMS)[3]에서 가장 강력한 형태를 취했습니다. DCL은 OpenVMS의 일부로 VSI에 의해 계속 개발되고 있습니다.
프로그래밍 언어 Fortran이 많이 사용되었을 때 작성된 DCL은 문자열, 정수, 비트 배열, 배열 및 부란을 포함한 여러 데이터 유형을 지원하는 스크립트 언어이지만 부동 소수점 숫자는 지원하지 않습니다.OpenVMS 시스템 서비스(커널 API)에 대한 액세스는 컴파일된 언어 서비스와 동일하게 수행되며 스크립트가 시스템 상태에 대한 정보를 가져올 수 있는 사전 함수를 통해 이루어집니다.DCL에는 IF-THEN-ELSE, 스트림, 인덱스 및 시퀀셜을 포함한 모든 RMS(Record Management Services) 파일 유형에 대한 액세스가 포함되지만 안타깝게도 DO-WHILE 또는 기타 루프 구조가 없으므로 사용자는 IF 및 GOTO 레이블 문을 대신 사용해야 합니다.
DCL은 다음과 같은 다른 운영 체제에서도 사용할 수 있습니다.
- VCL 및 VX/DCL for Unix,
- MS-DOS, OS/2 및 Windows용 VCL,
- PC-DCL 및 Open DCL for[4] Windows/Linux
- 및 Accelr8 DCL Lite for Windows.[5]
DCL은 Windows에서 1997년부터 Advanced System Concepts Inc.에 의해 배포된 CGI 기능과 인터프리터 IDE-WSH 엔진의 조합에 의해 구현된 XLNT 언어의 기초입니다.
명령줄 파서
OpenVMS 구현의 경우 명령줄 파서는 런타임 라이브러리입니다.CLI$)는 사용자 응용 프로그램에 컴파일할 수 있으므로 OS에서 제공하는 명령어와 사용자가 작성한 명령어 모두에 대해 일관된 명령줄 인터페이스를 제공합니다.명령줄은 동사로 시작하고 그 다음에 최대 8개의 매개 변수(인수) 및/또는 '/' 문자로 시작하는 한정자(유닉스 용어의 스위치)로 이어져야 합니다.Unix(DOS와 유사하지만)와 달리 '/' 앞에 공백이 필요하지 않습니다.수식자는 위치에 의존하지 않는(명령줄의 어느 곳에서나 발생) 또는 위치에 의존할 수 있습니다.이 경우 수식자는 뒤에 나타나는 파라미터에 영향을 줍니다.대부분의 예선에서는 포지션에 의존하지 않습니다.한정자에는 값 또는 일련의 값을 할당할 수도 있습니다.동사와 한정자 이름의 첫 번째 중요한 부분만 필요합니다.파라미터는 정수 또는 영숫자 텍스트입니다.
OS 명령어의 예는 다음과 같습니다.
세트회계 감사 /알람 /가능하게 하다=(허가, 침입.=모든.) 표시하다 장치 /파일 1$DGA1424:
두 번째 show 명령어는 다음과 같이 입력할 수도 있습니다.
sho dev $1$DGA1424:/fil
DCL 문서에는 보통 모든 DCL 명령어가 대문자로 표시되어 있지만 DCL 명령어는 대소문자를 구분하지 않고 대소문자를 구분하지 않고 입력할 수 있습니다.
OpenVMS와 같은 일부 구현에서는 최소 고유성 체계를 사용하여 명령어를 단축할 수 있는 반면, RSX-11과 같은 구현에서는 명령어를 최소 3자로 단축할 수 있습니다.
명령어를 찾기 위해 경로를 사용하는 다른 시스템과 달리 DCL에서는 명령어를 명시적으로 정의해야 합니다(CLD(Command Language Definition) 정의 또는 외부 기호를 통해).대부분의 OpenVMS 네이티브명령어는 CDU, 명령어 정의 유틸리티에 의해 컴파일되어 DCL '테이블'에 추가됩니다.SYS$LIBRARY:DCLTABLES.EXE
디폴트로는 프로세스는 자신의 테이블을 자유롭게 사용할 수 있으며 사용자는 이를 호출할 수 있습니다.예를 들어, "/BAR" 옵션을 받아들이고 이미지에 의해 구현되는 명령어 FOO 정의SYS$SYSEXE:FOO.EXE
는 다음과 같은 CLD 파일을 사용하여 실행할 수 있습니다.
동사 FOO 이미지 "SYS$SYSEXE:FOO.EXE" 한정자 바
사용자는 "FOO" 또는 "FOO/BAR"를 입력하면 FOO 프로그램이 호출됩니다.명령어 정의 언어는 날짜 및 파일 지정 등 다양한 유형의 옵션을 지원하며 수식자가 호출된 이미지를 변경하여 파일을 생성하고 "CREATE/Directory"를 사용하여 디렉토리를 생성할 수 있습니다.
명령어를 정의하는 다른 방법(간단하지만 유연성이 떨어지는)은 외부 명령어를 사용하는 것입니다.이것은 프로그램을 호출하는 Unix 메서드에 더 가깝습니다.다음 명령어를 발행합니다.
foo : == $sys$sysexe : foo.exe
'FOO' 명령은 FOO를 호출합니다.EXE 및 프로그램에 문자 그대로 추가 인수를 제공합니다.예를 들어, 다음과 같습니다.foo -v
". 이 메서드는 일반적으로 Unix 및 기타 비네이티브시스템에서 포팅된 프로그램, argc 및 argv 명령어 구문을 사용하는 C 프로그램에 사용됩니다.
V6.2로 시작하는 OpenVMS DCL 버전은 Unix 스타일의 명령 경로를 설정하기 위한 DCL$PATH 논리적 이름을 지원합니다.이 메커니즘은 Automatic Foreign Command라고 불립니다.DCL$PATH 에서는 디렉토리 리스트를 지정할 수 있습니다.이러한 디렉토리에서 DCL 명령어프로시저(명령어)가 검색됩니다.실행 가능한 이미지(명령어)의 경우.EXE)는 사용자가 입력한 명령어와 일치하는 파일 이름을 포함합니다.기존의 외부 명령어와 마찬가지로 자동 외부 명령어에서도 Unix 스타일의 명령어 입력이 가능합니다.
스크립트 작성
DCL 스크립트는 일부 예외를 제외하고는 다른 스크립트 언어와 매우 유사합니다.스크립트의 모든 DCL 동사 앞에는 $ 기호가 붙습니다.다른 행은 이전 명령어에 입력된 것으로 간주됩니다.예를 들어 TYPE 명령을 사용하여 화면에 문단을 인쇄하려면 다음과 유사한 스크립트를 사용할 수 있습니다.
$TYPE SYS$INPUT: 이것은 DCL 언어로 TYPE 동사를 사용하는 예입니다.$ 종료
참조하는 간접 변수
변환된 기호를 통해 참조되는 어레이를 DCL에 구축할 수 있습니다.이를 통해 프로그래머는 데이터 자체를 인덱싱 함수로 사용하여 임의의 크기의 데이터 구조를 구축할 수 있습니다.
$i = 1 $ variable 'i' = "blue" $i = 2 $ variable 'i' = "green" $ j = 1 $ color = "variable 'i' $ rainbow 'color' = "노란색"
이 예에서는 변수 레인보우 블루에 "빨간색"이 할당되고 레인보우 그린에 "노란색"이 할당됩니다.
명령어
다음은 OpenVMS 명령줄 [2]인터페이스에서 지원되는 일반적인 컴퓨팅 작업에 대한 DCL 명령 목록입니다.
어휘 함수
어휘 함수는 문자열 함수를 제공하고 VMS가 유지 관리하는 데이터에 액세스합니다.
일부 어휘는 다음과 같습니다.
F$EXTRACT(start,length,string)
: 서브스트링을 추출합니다.F$CVTIME
날짜/시간 정보를 가져옵니다.YEST_DOW=F$EXTRACT(0,3,F$CVTIME(DATE_EXPR,,"WEEKDAY"))
F$ELEMENT(0," ",ABC_DEF)
- 대상ABC_DEF = "ABC DEF"
돌아올 것이다"ABC"
F$SEARCH
: 파일을 검색하여 찾을 수 없는 경우 늘("")을 반환합니다.F$LOCATE(needle,haystack)
F$SetPRV("BYPASS,CMKRNL,ALTPRI")
- 이 기능에 액세스 할 수 있는 것은 특권입니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "VAX/VMS Software Language and Tools Handbook" (PDF). bitsavers.org. 1985. Retrieved 2020-12-31.
- ^ a b "VSI OpenVMS User's Manual" (PDF). VSI. July 2020. Retrieved 2021-01-27.
- ^ "Software Product Description and QuickSpecs - VSI OpenVMS Version 8.4-2L1 for Integrity servers" (PDF). VMS Software Inc. July 2019. Retrieved 2021-01-02.
- ^ "MichelValentin/PC-DCL". GitHub. 29 May 2022.
- ^ "Comparison of PC-DCL vs. Open DCL Lite".
A comparison of Valentin's PC-DCL vs. Accelr8 Open DCL Lite
추가 정보
- Paul C. Anagnostopoulos; Steve Hoffman (1998). Writing Real Programs in DCL (Second ed.). Digital Press. ISBN 1-55558-191-9.