제어 언어
Control Language| 패러다임 | 명령적 |
|---|---|
| 설계자 | IBM |
| 개발자 | IBM |
| 첫 등장 | 1978; 전 ( |
| OS | 제어 프로그램 시설, IBM i |
| 면허증 | 소유권 |
| 영향을 받은 | |
| 작업 제어 언어, PL/I | |
| 영향받은 | |
| Windows PowerShell | |
Control Language(CL)는 System/38 Control Program[1] Facility를 위해 IBM이 원래 만든 스크립팅 언어로, 나중에 OS/400(현재의 IBM i)에서 사용된다.IBM Job Control Language와 유사하며, 기존 프로그램을 호출하거나 해당 프로그램이 수행하는 작업에 대한 도움을 받을 때 사용되는 일련의 명령 개체(*CMD)로 구성되어 있다.또한 CL을 사용하여 CL 프로그램(셸 스크립트와 연계)을 만들 수 있으며, 프로그램 같은 기능(IF/ELSE, 변수 선언, 파일 입력 등)을 제공하는 추가 명령이 있다.
CL은 시스템 관리를 위한 스크립팅 언어지만 주로 컴파일된 프로그램을 만드는 데 사용된다.SBMDBJOB 명령을 통한 해석된 CL 스크립트 사용은 사실 극히 제한적이다.
프로그램 컴파일, 데이터 백업, 시스템 구성 변경, 시스템 개체 세부 정보 표시 또는 삭제와 같은 시스템 수준 작업을 수행하기 위해 IBM 개발자들이 작성한 명령어가 수천 개에 달하지만, 명령은 시스템 수준 관심사에만 국한되지 않고 사용자 애플리케이션용으로도 작성될 수 있다.
명령 및 프로그램
모든 전통적인 시스템/38 및 AS/400 프로그램의 주요 절차에 정의된 매개변수(명령줄 인수)는 숫자, 영숫자, 부울 등이 될 수 있는 매개변수로 구성되고 매개변수가 전달되는 순서가 중요한 하드 코딩된 목록이다.이는 Unix 셸 스크립트 및 C 프로그램의 매개 변수 목록이 문자 포인터의 집합 또는 배열이며 매개 변수가 위치적으로 종속되지 않는 경우가 많은 Unix 및 DOS 세계와 극명한 차이점이다.
이 문제에 대한 개발자의 해결책은 명령 객체(*CMD). 명령어의 매개변수는 어떤 순서로든 지정할 수 있지만, 각 매개변수는 프로그램에 특정 순서로 전달되도록 정의된다.프로그래머는 또한 무엇보다도 매개변수의 데이터 유형, 고유 매개변수 이름, 설명 텍스트(요청), 기본값(실행 중 매개변수가 지정되지 않은 경우에만 사용됨), 특정 집합 또는 범위로 제한되는 경우, 입력한 데이터를 다른 값으로 변경해야 하는 경우, Program을 호출하기 전에 프로그래밍할 수 있다.m 등
가장 기본적인 명령어는 사용자가 명령을 입력하거나 프롬프트하고 Enter 키를 누를 때 호출할 단일 프로그램의 이름을 지정한다.명령어는 사용자가 입력한 파라미터와 사용자가 입력하지 않은 파라미터 모두를 취합하고, 호출될 때 프로그램에 전달하는 파라미터 목록을 작성한다.
구문
훨씬 단순화된 CL 명령어 구문에 대한 BNF는 다음과 같이 정의될 것이다.
<>CL-command>.::)command-name[<>positional-parameter-list>.][<>named-parameter-list>.]<>positional-parameter-list>.::=<>parameter-value>,[<>positional-parameter-list>.]<>named-parameter-list>.::)parameter-name"("<>parameter-element-list>,")"[<>named-parameter-list>.]<>parameter-element-lis.t>.::=<>parameter-value>,[<>parameter-element-list>.]<>안 내려아라미터-값> ::=CL-name qualified-cl-name "*"특수값 일반-CL-name"*" ""영숫자 값""" 숫자 값 "X"""헥사데시말 값"""-name으로 끝나는 위의 항목은 일반적으로 이름이 문자로 시작하고 길이가 최대 10자까지 될 수 있다는 것을 의미하는 개체 이름 규칙을 따른다. (CL 명령어는 대소문자를 구분하지 않는다.)
일반적인 CL 명령의 좋은 예는 아래의 Change Program(CHGPGM) 명령이다.
CHGPGM MYPGM Optimize(*FULL) RMVOBS(*BLKORD *PRCORD) TEXT('내 프로그램') 위의 명령은 Change Program 처리를 수행하는 프로그램에 4개의 매개변수를 전달하며, 다음과 같다.
- MYPGM: 위치 파라미터(PGM) 및 필요한 파라미터만.이 경우 변경되는 프로그램의 이름이다.위치 파라미터는 항상 우선이다.명명된 매개 변수가 나타나면 다음에 나오는 모든 매개 변수의 이름을 지정해야 한다.
- OPTIME(*FULL): 특수 값인 단일 요소를 지정하는 명명된 매개 변수.이 경우 프로그램이 완전히 최적화되도록 변경된다.
- RMVOBS(*BLKORD *PRCOD): 여러 개의 특수 값을 지정하는 명명된 매개변수(Remove Observability)이 경우 프로그램에서 두 가지 종류의 프로파일링 데이터를 제거하도록 지시한다.
- TEXT('내 프로그램'):단일 영숫자 값을 지정하는 또 다른 명명된 매개 변수.이 경우 프로그램의 설명 텍스트가 변경된다.
실제로 시스템은 위에 명시된 4개보다 훨씬 더 많은 매개변수를 전달할 것이다.나머지 CHGPGM 명령의 매개변수가 지정되지 않아 대신 기본값이 전달되기 때문이다.PGM 매개변수를 제외하고 모든 매개변수에 대해 기본값은 *SAME이며, 이는 변경하지 않음을 의미한다.
프롬프트
모든 CL 명령은 명령을 입력하고 F4 기능 키를 눌러 명령줄 또는 CL 프로그램 소스 내에서 직접 프롬프트할 수 있다.OS/400 명령은 명령 앞에 ?를 입력하여 프롬프트할 수도 있다.(이미 일부 값을 입력한 상태에서 명령 문자열을 구성하는 대화형 프로그램에서 유용하다.)
그런 다음 시스템은 프로그램이 수락/요청하는 파라미터 세트가 있는 화면을 표시한다(필요한 파라미터는 대개 강조 표시).
필요한 파라미터가 먼저 나열되고, 시스템 제공 디폴트 값을 가진 파라미터가 마지막으로 나열된다.모든 파라미터를 보려면 F10을 누르십시오.한 선택에서 추가 선택이 필요한 경우 화면에 표시하여 해당 매개변수에 대해 해당 값을 선택할 때 해당 선택사항이 코드화된다.
프로그래머가 각 매개변수에 대해 유효한 값을 찾을 수 있도록 프롬프트를 더욱 강화한다.프롬프트 중에 이 작업을 수행하려면 커서를 해당 매개 변수 필드로 이동한 다음 F4 키를 다시 누르십시오.그런 다음 시스템은 필요한 입력 유형과 사용 가능한 허용 값 목록을 설명하는 화면을 표시할 것이다.
더 긴 이름을 입력하거나 추가 값을 입력할 수 있도록 목록을 확장하려면 값 대신 더하기 기호를 입력하십시오.(저장하거나 복원할 개체의 이름을 나열할 때와 동일)
명령 도움말
커서에 민감한 도움말을 명령어에 제공할 수도 있지만 필요하지 않다.도움말이 제공된 경우 커서를 원하는 매개변수 필드로 이동하고 F1(도움말)을 눌러 매개변수에 대한 도움말을 볼 수 있다.전체 명령어 자체(및 해당 파라미터의 모든)에 대한 도움말을 보려면 프롬프트 디스플레이의 아무 곳이나 F1을 누른 다음 F2(확장 도움말)를 누르십시오.
새 명령 만들기
비시스템 프로그램을 호출하기 위해 새로운 명령을 만들 수 있으며, 그것들은 내장된 버라이어티와 똑같이 작동할 것이다.명령 정의 언어는 CL 프로그래머 설명서에 설명되어 있다.
새 명령어와 매개 변수에 대한 도움말 화면을 만드는 것이 좋다.모든 도움말 화면은 패널 그룹 개체(*PNLGRP)를 사용하며, 이러한 개체들은 IBM AS/400 Application Display Programming 매뉴얼에 설명된 UIM 언어를 사용하여 생성할 수 있다.
운영 체제의 V5R3부터 훨씬 간단한 새 도움말 생성 방법이 추가됨: 명령 실행
GENCMDDOC CMD(MYLIB/MYCMD) 토디르('/QSYS')LIB/MYLIB.LIB/QPNLSRC.파일) GENOPT(*UIM) 스켈레톤 UIM 패널 그룹은 명령에 의해 설명되는 모든 파라미터를 포함하여 자동으로 생성된다.결과 파일을 편집(seu, wdsc, rdi)한 다음 CRTPNLGRP 명령으로 컴파일하고 마지막으로 CHGCMD HLPPNLGRP()를 통해 명령과 연관시킬 수 있다.
올바른 명령 찾기
V7R3에는 2,262개의 내장형 IBM 명령어가 포함되어 있지만,[3] 이러한 명령어를 찾는 것은 삶을 더 쉽게 만드는 시스템의 여러 가지 설계 때문에 그렇게 어렵지 않다.이러한 노동 절약 설계는 표준화된 약어, 명령 그룹화 메뉴 및 명령 선택이다.
표준 약어
IBM 개발자들은 명령 이름을 만드는 데 사용되는 약어를 표준화했다.변경과 같은 동사는 항상 CHG로 렌더링되고 DSP로 표시되며 WRK로 작동하며 CRT로 생성된다.프로그램 같은 과목은 항상 PGM, 사용자는 USR, 모듈은 MOD, 서버는 SVR 등이다.시스템에서 사용할 수 있는 모든 동사와 제목을 BERVER와 SERVICE 메뉴에서 볼 수 있으며, GO BERV 또는 GO SERVER 명령을 입력하기만 하면 된다.
마찬가지로 "Control Language Programming"은 약칭 CLP였으며, 소스 유형은 그에 따른 CLP였다.ILE 프로그래밍 모델의 도입으로 소스 유형이 "CLLE"[4]로 변경되었다.
BERV와 제목 메뉴는 명령 그룹화 메뉴라고 불리는 메뉴의 일부분이다.모든 3(4) Letter 약어에는 CMD 문자로 시작하는 전용 메뉴가 있다. 따라서 모든 CHG 명령을 보려면 GO CMDCHG 명령을 실행한다.프로그램 명령의 경우 메뉴는 CMDPGM이 될 것이다.
명령 그룹화 메뉴 외에 다른 메뉴도 있다.메뉴 시스템의 시작점은 빈 명령줄에서 F4를 눌러 액세스할 수 있다.
명령 선택
명령의 일부만 알고 있거나 명령이 AS/400 약어 표준에 부합하지 않는 곳에서 타사 소프트웨어가 사용되고 있는 경우, 당신은 알려진 명령의 해당 부분을 입력하고 별표(일반으로 만들기 위해)를 첨부한 후 Enter 키를 누른다.그러면 시스템은 방금 입력한 일반 이름과 일치하는 명령 목록을 작업 라이브러리 목록에 표시한다.그런 다음 필요한 명령을 찾아 목록을 페이지를 넘겨 옵션 1을 사용하여 선택할 수 있다.
백그라운드에서 시스템은 SLTCMD 명령을 사용하여 이 기능을 수행하고 있다.라이브러리에서 모든 명령을 선택하려면 이 명령어를 확인하고 특수 값 *ALL을 입력하십시오.
샘플코드
다음은 CL 프로그래밍의 샘플이다.그 프로그램은 대화식으로 날짜를 줄리앙에서 MSY로 변환하고 그 반대의 경우도 마찬가지다.결과는 터미널 24번 라인에 표시된다.두 가지 매개 변수를 사용할 수 있다.그&IN변환할 날짜 문자열인 매개 변수.줄리안 문자열의 경우 YYNN 형식이어야 하며, 여기서 YY는 연도 번호, NNN은 연도 번호여야 한다.MSY 문자열의 경우 MMDYY 형식이어야 한다.두 번째 파라미터는&TYP변환할 날짜 유형.'J'(줄리안) 또는 'M'(MDY)이어야 한다.예: 명령어CALL PGM(ICVTDATC) PARM('04180' 'M')줄리안 날짜 04180을 062804(2004년 6월 28일)로 변환한다.
유도탄 고속 함(&&IN은TYP)DCL&*CHAR 6DCL&.OUT*CHAR 8DCL&.TYP*CHAR 1만약(&.TYP)J)와 DOCVTDAT 작업(&.)IN은 TOVAR(&OUT)FROMFMT(*MDY)+TOFMT(*JUL)TOSEP(*NONE)ENDDO ELSE 만약(&.TYP)M)+DOCVTDAT 작업(&.)IN은 TOVAR(&OUT)FROMFMT(*JUL)+TOFMT(*MDY)TOSEP(*NONE)END.DO SNDPGMGMSG('IN=' &IN 'OUT=' &OUT) + MSGTYPE(*COMP) ENDPGM 참고 항목
참조
- ^ "IBM System/38 Control Language Reference Manual" (PDF). IBM. 1982-09-10. Retrieved 2021-03-24.
- ^ itjungle.com
- ^ IBM.com
- ^ Meyers, Bryan (1997). Control Language Programming for the AS/400 (2nd Edition). 29th Street Press. ISBN 9781882419760.