PL/I

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

PL/I(IPA[ˌpiːˌɛlˈwʌn])는 "Programming Language One"의 약어로, 과학, 공학 및 산업 응용 프로그램을 위해 설계된 명령형 프로그래밍 언어이다. IBM에서 자사의 메인프레임에서 사용하기 위해 개발했다.

언어 요약[편집]

이 언어는 전적으로 모든 프로그래머들에게 맞추도록 설계되어 있다.[1] 이 요약은 ANSI PL/I 표준 [2] 및 ANSI PL/I General-Purpose Subset 표준으로부터 가져온 것이다.[3]

분류
구조적 PROCEDURE (또는 PROC)
ENTRY
BEGIN
DO
END
선언적 DECLARE (또는 DCL)
DEFAULT (또는 DFT)
FORMAT
제어 흐름 CALL
IF
SELECT
GO TO
RETURN
STOP
Null 문
인터럽트 핸들링 ON
SIGNAL
REVERT
스토리지 ALLOCATE (또는 ALLOC)
FREE
할당문
입출력 OPEN
CLOSE
스트림 입출력 GET
PUT
레코드 입출력 READ
WRITE
REWRITE
LOCATE
DELETE

식별자 선언은 다음의 특성들 중 하나 이상을 포함할 수 있다:

데이터 특성 입출력 특성 기타 특성
ALIGNED DIRECT AUTOMATIC 또는 AUTO
AREA[( area-size)] ENVIRONMENT(options) 또는 ENV... BASED[(reference)
BINARY [(precision)] 또는 BIN... INPUT BUILTIN
BIT [(maximum-length)] KEYED CONDITION 또는 COND
CHARACTER[(maximum-length)] 또는 CHAR... OUTPUT CONSTANT
COMPLEX [(precision)] 또는 CPLX... PRINT CONTROLLED 또는 CTL
DECIMAL [(precision)] 또는 DEC... SEQUENTIAL 또는 SEQL DEFINED[( reference)] 또는 DEF...
(dimension-attribute) STREAM EXTERNAL 또는 EXT
ENTRY[(parameter descriptor list] UPDATE GENERIC(criteria list)
FILE RECORD INITIAL(value-list) 또는 INIT...
FIXED [(precision)] INTERNAL 또는 INT
FLOAT [(number of digits)] LIKE unsubscripted reference
FORMAT LOCAL
LABEL OPTIONS(options)
MEMBER PARAMETER 또는 PARM
NONVARYING 또는 NONVAR POSITION [(expression)] 또는 POS...
OFFSET[(reference)] STATIC
PICTURE picture-specification 또는 PIC... VARIABLE
POINTER 또는 PTR
STRUCTURE
UNALIGNED 또는 UNAL
VARYING 또는 VAR

예제 프로그램[편집]

문자열 검색[편집]

FINDSTRINGS: PROCEDURE OPTIONS(MAIN);
  /* READ A STRING, THEN PRINT EVERY */
  /* SUBSEQUENT LINE WITH A MATCH */

  DECLARE PAT VARYING CHARACTER(100),
          LINEBUF VARYING CHARACTER(100),
          (LINENO, NDFILE, IX) FIXED BINARY;

  NDFILE = 0;
  ON ENDFILE(SYSIN) NDFILE=1;
  GET EDIT(PAT) (A);
  LINENO = 1;
  DO WHILE (NDFILE=0);
    GET EDIT(LINEBUF) (A);
    IF LENGTH(LINEBUF) > 0 THEN DO;
      IX = INDEX(LINEBUF, PAT);
      IF IX > 0 THEN DO;
        PUT SKIP EDIT (LINENO,LINEBUF)(F(2),A);
      END;
    END;
    LINENO = LINENO + 1;
  END;
  END FINDSTRINGS;

제한이 없는 변수 이름[편집]

키워드와 동일한 이름을 변수로 쓸 수 있다.

 IF IF = THEN THEN THEN = ELSE; ELSE ELSE = IF;

각주[편집]

  1. Vowels, Robin (2001). 《Introduction to PL/I》. x쪽. ISBN 0-9596384-9-0. "PL/I is the first language to provide adequate facilities for scientific computations, business data processing and systems programming in a single language" - Jean Sammet, Some Approaches to, and Illustrations of, Programming Language History 
  2. ANS Programming Language PL/I. X3.53-1976
  3. ANSI X3.74-1981 (R1998) Information Systems - Programming Language - PL/I General-Purpose Subset

바깥 고리[편집]