PL/I
(
IPA:
[?piː??l?w?n]
)는
Programming Language One
의 略語로, 科學, 工學 및 産業 應用 프로그램을 위해 設計된 命令形 프로그래밍 言語이다.
IBM
에서 自社의
메인프레임
에서 使用하기 위해 開發했다. 1960年代 導入 以後로 다양한 學術, 商業, 産業 團體들이 使用하고 있으며, 2009年 基準으로 如前히 活潑히 쓰이고 있다.
[1]
PL/I의 主要 分野는
데이터 處理
,
數値 解釋
,
科學的 演算
,
시스템 프로그래밍
이다. 言語의 文法은 英語와 같이 取扱되며 이들을 確認하고 操作하는 命令語 集合을 使用하여 複雜한 데이터 形式을 記述하는데 適切하다.
歷史
[
編輯
]
1950年代와 1960年代 初에 비즈니스 및 科學 分野의 使用者들은 各其 다른 프로그래밍 言語를 使用하여 다른 컴퓨터 하드웨어를 위해 프로그램을 作成하였다. 비즈니스 分野의 使用者들은
COMTRAN
을 經由하는
오토코더
에서
코볼
로 옮겨가고 있었지만, 科學 分野의 使用者들은 GIP(General Interpretive Programme),
포트란
,
알골
,
GEORGE
로 프로그램을 作成하였다.
IBM 시스템/360
[2]
(1964年에 發表하였으나 1966年까지 普及되지 않았음)이 두 그룹의 使用者들을 위한 共通의 머신 아키텍처로 設計되면서 旣存의 모든 IBM 아키텍처들을 代替하였다. 이와 비슷하게, IBM은 모든 使用者들을 위한 單一 프로그래밍 言語를 願하였다. IBM은 포트란이 常用 프로그래머들이 必要로하는 機能들로 擴張되길 바랐다. 1963年 10月, IBM 科學 使用者 그룹의 세 名의 뉴욕 IBM 出身과 세 名의
SHARE
出身에 依해 한 委員會가 設立되었고
[3]
포트란에 對한 이러한 擴張들을 提案하였다. 포트란의 制約으로 인해 이를 遂行할 수 없었고
알골
에 어느 程度 基盤한 NPL이라는 이름의 새로운 프로그래밍 言語의 設計에 着手하였다. NPL이라는 이름은 英國의 National Physical Laboratory와 衝突되어 MPPL (MultiPurpose Programming Language)로 바뀌었고, 1965年 PL/I으로 바뀌었다. 最初의 定義는 1964年 4月에 登場하였다.
[4]
[5]
最初의 컴파일러는 1966年에 普及되었다. PL/I 標準은 1976年에 承認되었다.
言語 要約
[
編輯
]
이 言語는 全的으로 모든 프로그래머들에게 맞추도록 設計되어 있다.
[6]
이 要約은 ANSI PL/I 標準
[7]
및 ANSI PL/I General-Purpose Subset 標準으로부터 가져온 것이다.
[8]
分類
|
文
|
構造的
|
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;
같이 보기
[
編輯
]
各州
[
編輯
]
- ↑
Sturm, Eberhard (2009). 《The New PL/I》. Vieweg+Teubner.
ISBN
978-3-8348-0726-7
.
- ↑
IBM's 360 and Early 370 Systems, Emerson W. Pugh, Lyle R Johnson, John H Palmer,
MIT Press
, 1991
- ↑
The committee actually had 8 members at the time the report was released. They were:
- ↑
Report II of the SHARE
Advanced Language Development Committee, June 25, 1964
- ↑
Highlights of a New Programming
Language, G.Radin and H.Paul Rogoway
Communications of the ACM
V8 No 1, Jan 1965
- ↑
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
-
辰 社멧
,
Some Approaches to, and Illustrations of, Programming Language History
- ↑
ANS Programming Language PL/I. X3.53-1976
- ↑
ANSI X3.74-1981 (R1998)
Information Systems - Programming Language - PL/I General-Purpose Subset
外部 링크
[
編輯
]