Универсальный алгоритмический язык (сокращение от Programming Language One), разработанный в 1963-64 фирмой по производству вычислительных машин ИБМ (International Business Machines). В языке нашли свое отражение как опыт предшествующих ему языков алгол, фортран, кобол, так и многие новые идеи программирования, появившиеся к моменту создания . На язык также оказали заметное влияние особенности вычислительных машин фирмы ИБМ и их операционной системы. устроен таким образом, чтобы из него можно было выделять подмножества, удовлетворяющие нуждам конкретного приложения. Программа на составляется из независимо транслируемых модулей, называемых внешними процедурами, к-рые имеют алголоподобную блочную структуру и включают процедуры (возможно, многовходовые и рекурсивные) и блоки. Наибольшее значение для диапазона применения имеет разнообразие типов данных. Язык имеет дело с данными арифметическими (действительными и комплексными, с фиксированной и плавающей запятой, двоичными и десятичными), строковыми (литерными и битовыми), данными с шаблоном (аналогичными шаблонам в коболе) и данными для управления программой (метка передачи управления, вход, указатель, файл, ветвь и событие). Язык обеспечивает возможность объединения данных в агрегаты — массивы и структуры. Массивы представляют собой упорядоченный набор однородных элементов (скаляров или структур). Структурами в наз. иерархически упорядоченный набор элементов, каждый из к-рых имеет свое имя и может иметь свой тип данных и организацию. Правила вычисления выражений позволяют вырабатывать произвольные значения. В случае несоответствия типов данных при их вычислении осуществляется автоматич. преобразование к типу, требуемому операциями или конкретным контекстом. Существенной особенностью являются правила умолчания, позволяющие программисту указывать, напр., не все свойства данных, не все компоненты операторов, не все параметры встроенных функций. То, что не указано явно программистом, понимается нек-рым заранее определенным образом или же исходя из контекста. обладает развитыми средствами управления работой с памятью. Эти средства позволяют программисту самому определять момент размещения переменных в памяти, объем требуемой памяти, скорость выборки элементов данных, повторно использовать уже выделенную память под другим именем и, возможно, с другой интерпретацией содержащихся в ней значений без переразмещения. Память может быть выделена статически (до исполнения программы) или динамически (при входе в блок или при исполнении оператора размещения). Выделенная для нек-рой переменной память может быть организована по типу стека с соответствующими правилами доступа или может быть связана с нек-рым указателем. Наряду с обычными операторами присваивания, перехода, итеративного исполнения, вызова процедур, условными операторами, включает средства для синхронизации параллельно исполняемых процедур, для исполнения нек-рых операторов во время компиляции, а также для выполнения нек-рых действий (системных или определенных программистом) при возникновении ситуаций (стандартных или определенных программистом), вызывающих прерывание при исполнении программы. В представлены разнообразные средства для обмена данными с внешними устройствами (посредством записей, посимвольно и с редактированием). В язык встроено большое количество стандартных функций, к-рые существенно облегчают программирование. Стандарт , опубликованный в 1976, дает более формальную и точную спецификацию языка, обобщает понятие типа и правила вычисления выражений и вычисляемых функциями значений. В то же время в стандарт языка не включены средства для параллельного исполнения и средства организации вычислений в период трансляции. Лит.:[1] Универсальный язык программирования PL/1, пер. с англ., М., 1968; [2] Скотт Р., Сондак Н., ПЛ/1 для программистов, пер. с англ., М., 1977; [3] Программирование на ПЛ/1 ОС ЕС, М., 1979; [4] Бухтияров A.M., Фролов Г. Д., Олюнин В. Ю., Сборник задач по программированию на языке ПЛ/1, М., 1978; [5] American National Standard programming language PL/1, ANSI, X 3.53-1976. Л. A. Kopнeвa.