VisualAge. Описание, скачать

IBM VisualAge — семейство сред разработки программного обеспечения (IDE), поддерживающее множество языков программирования.
VisualAge была впервые выпущена в октябре 1993 г., поддержка прекращена 30 апреля 2007 года.

Пакет VisualAge PL/I был наиболее полной для своего времени системой программирования на PL/I из существующих для архитектуры Intel x86. Он поддерживал все возможности PL/I для мейнфреймов IBM с небольшими ограничениями, обусловленными различиями архитектур и операционных систем.

Пакет включает в себя IDE для создания, задания параметров и сборки проектов, редактор LPEX (Live Parsing Extensible Editor), интерпретатор языка REXX (мощный скриптовый язык, созданный на основе языка PL/I фирмой IBM), необходимые библиотеки и заголовки для работы с ODBC и WinAPI, отладчик (Debugger), анализатор производительности (Performance Analyzer) а также средства для дистанционной отладки программ для мейнфреймов. В пакет включена подробная справочная система по всем компонентам, в последние пакеты исправлений (FixPack) включена также документация в формате PDF на английском языке.

Несмотря на то, что к настоящему времени данный продукт в целом сильно устарел, компилятор все еще позволяет получать исполняемый код, в ряде случаев не уступающий или даже превосходящий таковые, созданные современными системами программирования. Также возможно взаимодействие с программами, написанными на других языках, в частности, Java.

Система программирования во многом аналогична таковой, применявшейся на мейнфреймах System/370 с ОС MVS и VM (вплоть до таких мелочей, как задание опций компилятора после открывающей круглой скобки), таким образом пользователям, имеющим опыт работы на S/370 или ЕС ЭВМ, не требуется много времени для освоения.

ПОДГОТОВКА ИСХОДНОГО ТЕКСТА ПРОГРАММЫ И ТРАНСЛЯЦИЯ ПРОГРАММНЫХ МОДУЛЕЙ

Исходный текст программы, составленной на языке PL/I, размещается в файле с произвольным именем и типом .PLI. Предложения программного модуля находятся в колонках со второй по семь­десят вторую включительно. В одном файле может размещаться несколько программных модулей. В этом случае они разделяются операторами вида

*PROCESS режимы;

где режимы — указываемые при необходимости режимы трансляции каждой программной единицы. Отдельные части программных единиц, включаемые по оператору %INCLUDE, должны находиться в файлах с типом .CPY. Оптимизирующий транслятор PLI в значительной степени оптимизиру­ет создаваемый объектный модуль. Цель выполняемой оптимизации заключается в том, чтобы создать такой объектный модуль, для которого будут мини­мальными требования к памяти и время выполнения программного модуля. Отметим, что для связи программ, написанных на языке PL/I, с программами, написанными на языках Forfran, Cobol, C/C++, Java в VA PL/I реализованы языковые средства, обеспечивающие прямой вызов программ на указанных языках из программ на PL/I и наоборот. Трансляция программного модуля, написанного на языке PL/I, выполняется командой

PLI иф ( режимы

где иф — имя файла типа PLI, содержащего исходный текст про­граммного модуля; режимы — используемые режимы трансляции. Режимы могут задаваться в любой последовательности и должны быть отделены друг от друга как минимум одним пробелом. Если режимы, задаваемые в команде PLI и операторе *PROCESS противоречат друг другу, то устанавливаются режимы, указанные в последнем.

Рассмотрим основные режимы транслятора.
1) Source — указывает, что дшстинг с исходным текстом программы будет помещен в в файл типа .LST;
NoSource — отменяет режим Source;
2) AGgregate — указывает, что для всех массивов и структур выводится
уровень идентификаторов структуры, размерность массива, относительные
адреса подструктур и элементов структур, длины элементов, а также общая
длина в байтах (все данные выводятся в виде таблицы);
NoAGgregate — отменяет режим AGGREGATE;
3) Atr — указывает, что выводится таблица атрибутов, содержащая все
идентификаторы исходного текста с их атрибутами. При задании совместно с
данным режимом режима XREF таблицы атрибутов и перекрестных ссылок
объединяются;
NoAtr — отменяет режим ATR;
4) Compile — определяет, что транслятор будет продолжать обработку программы, если при проведении синтаксического контроля не было обнаружено ошибок, приводящих к прекращению трансляции;
NoCompile — указывает, что после проведения синтаксического контроля трансляция будет прервана при обнаружении ошибок. Отметим, что транслятор подразделяtn обнаруживаемые ошибки в зависимости от их грубости на пять групп:
а) информационные (Informatory message) — I;
б) предупреждающие (Warningmessage) — W;
в) ошибки, которые транслятор пытается исправить (Error) — Е;
г) грубые ошибки, транслятором не исправляемые (Severe error) — S;
д) неисправимые ошибки (Unrecoverable error) — U.
Пользователь, указав в режиме NOCOMPILE определенный аргумент ( W, Е либо S ) , может прервать трансляцию при обнаружении ошибок грубости выше W, E либо S;
5) Flag(p) — определяет минимальную степень грубости, при которой требуется вывод сообщений об ошибках. Аргумент р принимает значения I, W, E, S , в зависимости от которых режим FLAG позволяет получить следующую информацию. Режим Flag(I) выводит все сообщения; режим Flag(I) (либо Flag) — все сообщения, за исключением информационных; режим Flag(E) — все сообщения, за исключением информационных и предупреждающих; режим Flag(S) — сообщения о грубых и неисправимых ошибках;
6) INCLUDE — указывает, что в исходный текст программы на языке PL/I будет включен текст по оператору %INCLUDE;
NOINCLUDE — отменяет режим INCLUDE.
7) NesT — указывает, что листинг исходного текста, выводимый по режиму SOURCE, должен содержать указатели уровня вложенности блоков и циклов DO, Назначение выводимой информации- упрощение определения областей действия объявленных имен переменных и различных циклов DO;
NoNesT — отменяет режим NEST;
8) OPtions — задает вывод списка всех режимов транслятора, которые используются при трансляции;
NoOPtions — отменяет режим OPtions;
9) OPT(TIME), ОРТ(2) указывают, что создаваемый объектный модуль оптимизируется относительно времени выполнения. Иными словами, сгенерированные машинные команды строятся таким образом, чтобы было сведено к минимуму время выполнения программы. Вторичный эффект оптимизации такого вида заключается в том, что минимизируется объем основной памяти, требуемый для объектного модуля. Отметим, что режимы ОРТ(TIME) и ОРТ(2) значительно увеличивают время трансляции. Эти режимы эквивалентны;
NOOPT, ОРТ(0) — подавляют глобальную оптимизацию, однако при их использовании скорость трансляции будет максимальна. Режимы NOOPT и ОРТ(0) эквивалентны;
10) STMT — указывает, что во время выполнения программы в выдаваемые сообщения будут включены номера операторов исходного текста;
NOSTMT — отменяет режим STMT;
11) SYNtax — указывает, что синтаксический контроль программы выполняется до тех пор, пока не будут найдены все ошибки степени грубости U ;
NoSYNtax(p) — вызывает передачу управления пользователю в зависимости от значения аргумента р , который может принимать значения W, E, S;
NoSYNtax(W) — синтаксис не проверяется, если было выдано предупреждение либо найдены ошибки уровней E, S, U;
NoSYNtax(E) — синтаксис не проверяется, если были найдены ошибки уровней S и U;
NoSYNtax(S) синтаксис не проверяется, если были найдены ошибки уровней S и U;
Режим NoSYNtax без аргумента вызывает безусловную передачу управления пользователю после ввода исходного текста.
При действующем режиме SOURCE транслятор выдает листинг исходного текста даже тогда, когда синтаксический контроль не выполняется;
12) TERMinal — указывает, что на экран выводятся диагностические и информационные сообщения;
NoTERMinal — отменяет вывод всех сообщений на экран устройства отображения;

По умолчанию устанавливаются следующие режимы: NOSOURCE, NOAGGREGATE, NOATR, NOCOMPLE(S), FLAG(I), NOINCLUDE, NONEST, NOOPTTIOS, OPT(0), NOSTMT, NOSYNTAX(S), TERMINAL.

Полный перечень опций (режимов) приведен в справочной системе и в руководстве по программированию («PL/I for WindowsProgramming Guide»), содержащемся в файле <папка установки VA PL/I>\HELP\pdf\VAPLIPG.PDF.

РЕДАКТИРОВАНИЕ СВЯЗЕЙ И СОЗДАНИЕ ИСПОЛНЯЕМОГО МОДУЛЯ

Для создания исполняемого файла (.EXE) необходимо ввести команду:

ILINK иф1 иф2р1 р2д1 д2

Где иф1, иф2… — файлы объектных модулей (.OBJ) или библиотек (.LIB), р1, р2…  режимы (опции) редактирования, начинающиеся с символа косой черты (/), д1, д2… — список дополнительных директорий (папок) для поиска файлов редактором связей. Директории должны быть указаны с использованием прямой (/) или обратной (\) косой черты, чтобы редактор мог распознать их как путь.

Для использования дополнительных возможностей (режимы редактирования, создания библиотек, сборка с использованием команды MAKE) обратитесь к руководству по программированию.

ОПРЕДЕЛЕНИЕ ВВОДНЫХ И ВЫВОДНЫХ ФАЙЛОВ.

Для ассоциации файлов Windows с файлами PL/I программ используются операторы установки переменных окружения, являющиеся аналогами DD-операторов в OS/360 или операторов FILEDEF в VM.

Оператор имеет вид:

SET DD:ddname=иф, режимы где ddname — имя файла PL/I-программы или DD-имя, определенное опцией TITLE оператора OPEN, иф — имя файла Windows, режимы — дополнительные режимы (опции) ввода-вывода, перечисляемые через пробел.

Примеры:

SET DD:SYSPTINT=TEST.PRT, Append(n)

SET DD:SYSIN=TEST.TXT

— определяет вывод файла SYSPRINT в файл TEST.PRT, при этом добавление в конец существующего файла не производится (существующий файл TEST.PRT будет перезаписан),  и ввод данных файла SYSIN из файла TEST.TXT

SET DD:SYSIN=CON, PROMPT(Y) SAMELINE(Y) — определяет стандартный ввод данных с клавиатуры, при этом на экран будет выводиться подсказка (двоеточие), с вводом в той же строке сразу после подсказки.

Полный список опций и переменных окружения см. в руководстве по программированию.

Файлы также могут быть определены без использования переменных окружения с использованием опции TITLE в операторе OPEN при помощи косой черты (/), набор используемых опций при этом аналогичен:

OPEN FILE (SYSPRINT) TITLE (‘/TEXT.PRT, Append(n)’);

РАБОТА С МЕНЕДЖЕРОМ ПРОЕКТОВ.

Менеджер проектов VA PL/I трудно назвать полноценным IDE, тем не менее,несмотря на свою архаичность, он может значительно облегчить работу тем пользователям, которые не желают работать из командной строки.

В графическом интерфейсе менеджера можно задать основные файлы, переменные окружения, директории проекта (пункт меню File -> Prоjеct ettings), опции компилятора, редактора связей и сборщика (пункт меню Options), и выполнить компиляцию, сборку и запуск исполняемого файла (пункт меню Actions, а также графическая панель инструментов).

В меню и на панели инструментов отсутствует пункт и кнопка редактирования связей (Link), для запуска редактора необходимо выбрать курсором файл  объектного модуля (.OBJ) и в выпадающем меню по нажатию правой кнопки выбрать пункт «Link», либо просто нажать Ctrl-Shift-L.

Имеется также ряд других возможностей: отладка (Debug), анализ производительности (Analyze), для получения сведений о работе необходимо обратиться к встроенной справке соответствующих приложений.

РЕДАКТОР LPEX.

Редактор LPEX (Live Parsing Extensible Editor), входящий в комплект ПО VA PL/I, на сегодняшний день как редактор безнадежно устарел, но, тем не менее, обладает рядом интересных возможностей.

Прежде всего, он позволяет уже на этапе набора текста выявлять и подсвечивать синтаксические ошибки:

Также он имеет возможности операций с фрагментами текста без применения механизма Copy/Paste с использованием префиксной области.

Рассмотрим пример: необходимо сдвинуть фрагмент текста на 3 позиции вправо. Для этого включим префиксную область через пункт меню Options -> Key behavior -> XEDIT, после чего в левой части появятся пятизначные номера строк — это и есть префиксная область. Далее вводим на месите номеров в первой и последней строках нужного фрагмента команду «>>3» и нажимаем Enter.

В результате фрагмент сдвинется на 3 позиции вправо:
В целом система команд префиксной области и командной строки аналогична таковой редактора Xedit (редактор, созданный IBM для мейнфреймов System/370 для работы на терминале ОС VM/SP) и его аналогам для ПК (Кedit для MS DOS, THE для Windows и GNU/Linux), поэтому для получения информации о возможностях редактирования LPEX можно воспользоваться справочной литературой по этим редакторам.

Для работы с текстами PL/I также можно воспользоваться другими редакторами, имеющими возможность подсветки синтаксиса этого языка. Из бесплатных редакторов можно выделить KATE, редактор файлового менеджера FAR, также MS Visual Studio Code имеет плагин, позволяющий подсвечивать синтаксис PL/I.

УСТАНОВКА IBM VISUALAGE PL/I.

Нам понадобятся три установочных пакета с FTP-сервера IBM: демо-версияпакет исправлений 10пакет исправлений 14.  Кроме того, для установки демо-версии в 64-разрядных ОС Windows понадобится файл Setup32.exe (всё перечисленное кликабельно).

Все zip-архивы распаковываются на жесткий диск. Важно: путь к папке демо-версии  не должен содержать русских букв и прочих non-ASCII символов. Файл Setup32.exe помещается в папку демо-версии. Для запуска установки в свойствах файла setup.exe/setup32.exe необходимо указать режим совместимости Windows NT или Windows XP. При установке на OC GNU/Linux с использованием WINE в настройках WINE (winecfg), возможно, потребуется установить версию Windows XP. GUI-приложения (редактор, менеджер проектов и пр.) в WINE будут работать с ограничениями или не будут работать совсем, консольные приложения и создаваемые ими программы будут работать практически без ограничений.

Порядок установки на ос Windows:
1. Ставим демо-версию из папки PLIWINTB.
2. Ставим пакет исправлений FP14. (Важно: на этапе выбора компонентов следует выбрать установочную папку. Для того, чтобы избежать дублирования, выберите папку с установленной демо-версией).
3. Запускаем Setup из FP10, выбираем «Modify», снимаем галку с какого-нибудь ненужного компонента, нажимаем «Далее», дожидаемся окончания установки.
4. Снова запускаем установку FP10, на этот раз выбираем «Repair».
5. Повторяем установку FP14, на этот раз также выбираем «Repair».
6. Пакет готов к работе.

В процессе установки могут возникать сообщения об ошибках в установке тех или иных второстепенных компонентов, их следует игнорировать. Рекомендуется создать перед установкой точку сохранения вашей ОС, так как в случае неудачной установки повторная установка может быть невозможна без чистки реестра вручную.

ПРИМЕР ПРОГРАММЫ.

Ниже рассмотрен простейший пример программы вывода графического информационного окна сообщения с использованием WinAPI.

 

HW:PROCEDURE OPTIONS (MAIN);
 /* Пример обращения к WinAPI без использования встроенных */
 /* библиотек объектных модулей и заголовков.              */
 /* Объявляем функции WinAPI */
 DECLARE MESSAGEBOXW  ENTRY(PTR, CHAR(*) VARYINGZ BYADDR
NONASSIGNABLE, CHAR(*) VARYINGZ BYADDR NONASSIGNABLE OPTIONAL, FIXED BINARY (32) UNSIGNED) RETURNS(OPTIONAL FIXED BINARY (31) BYVALUE) OPTIONS (BYVALUE LINKAGE (STDCALL) NODESCRIPTOR FETCHABLE) EXTERNAL ('user32/MessageBoxA'); DECLARE FINDWINDOWW ENTRY(CHAR(*) VARYINGZ BYADDR NONASSIGNABLE, CHAR(*) VARYINGZ BYADDR OPTIONAL NONASSIGNABLE) RETURNS(OPTIONAL FIXED BINARY (31) BYVALUE) OPTIONS (BYVALUE LINKAGE (STDCALL) NODESCRIPTOR FETCHABLE) EXTERNAL ('user32/FindWindowA'); DECLARE SHOWWINDOWW ENTRY(FIXED BINARY (32) UNSIGNED, FIXED BINARY (32) UNSIGNED) RETURNS(OPTIONAL FIXED BINARY (8) UNSIGNED BYVALUE) OPTIONS (BYVALUE LINKAGE (STDCALL) NODESCRIPTOR FETCHABLE) EXTERNAL ('user32/ShowWindow'); /* Подключаем функции библиотеки Windows user32.dll */ FETCH FINDWINDOWW, MESSAGEBOXW, SHOWWINDOWW; /* Находим и и отключаем окно консоли */ IH=FINDWINDOWW('ConsoleWindowClass'); CALL SHOWWINDOWW(IH,0); /* Выводим окно сообщения */ A1:IF MESSAGEBOXW(NULL(),'Hello, world!','Sample message box',64+6) =10 THEN GOTO A1; RELEASE FINDWINDOWW, MESSAGEBOXW, SHOWWINDOWW; END HW;

Библиотека научных программ ПНП ПЛ/1 (SSPPL) для использования с IBM VA PL/I: SSPPL.zip — содержит SSPPL.PLI (исходные тексты для VA PL/I)   и SSPPL.LIB — библиотеку объектных модулей.

Авторизация
*
*

один + четырнадцать =

Регистрация
*
*
*

3 × три =

Генерация пароля

8 − шесть =

Перевести »
Прокрутить вверх
Scroll to Top