Московский государственный университет путей сообщения
Опубликован: 13.04.2006 | Доступ: свободный | Студентов: 850 / 83 | Оценка: 4.41 / 3.73 | Длительность: 24:53:00
Лекция 8:

Средства разработки и управления приложениями

< Лекция 7 || Лекция 8: 123 || Лекция 9 >

Универсальная языковая среда Language Environment

Базовый компонент z/OS Language Environment (LE) поддерживает единую универсальную среду выполнения (run-time environment) для приложений, созданных на языках программирования высокого уровня (HLL) C/C++, COBOL, PL/1 и Fortran [ 5.28 ] . Языковая среда LE включает наиболее существенные и часто используемые сервисы времени выполнения, такие как формирование сообщений, обработка событий, управление памятью, поддержка функций даты и времени и т.п. Эти сервисы доступны всем приложениям, независимо от используемого языка программирования. Кроме того, LE упрощает взаимодействие между приложениями, написанными на разных языках или для разных операционных сред, за счет специальных интерфейсных средств.

Языковая среда z/OS V1R4 поддерживает приложения, полученные с помощью следующих версий компиляторов:

  • z/OS C/C++, C/C++ Compiler for MVS/ESA, AD/Cycle C/370 Compiler;
  • Enterprise COBOL for z/OS and OS/390, COBOL for OS/390 & VM, COBOL for MVS & VM;
  • Enterprise PL/I for z/OS and OS/390, PL/I for MVS & VM, VisualAge PL/I for OS/390;
  • VS Fortran, Fortran IV;
  • VisualAge for Java, Enterprise Edition for OS/390.

Приложения, написанные на HL Assembler, также могут использовать средства LE через соответствующие макровызовы.

Языковая среда LE состоит из следующих элементов (рис. 5.60):

  • базовые программы (basic routines), обеспечивающие универсальную обработку сообщений, запуск и завершение программ, динамическое распределение памяти, обработку событий (в том числе ошибок) времени выполнения, взаимодействие между программами, написанными на разных языках;
  • общие библиотеки (common library service), содержащие набор модулей для поддержки математических функций и функций даты и времени, реализуемых на основе стандартного интерфейса вызовов функций LE (callable services);
  • специфические библиотеки (language specific RTL), содержащие модули, применяемые только для одного из поддерживаемых языков HLL.
Универсальная среда выполнения программ Language Environment

Рис. 5.60. Универсальная среда выполнения программ Language Environment

Создаваемые с использованием универсальных модулей LE-приложения могут выполняться в различных операционных средах, включая как внутрисистемные (TSO, пакетный режим, UNIX shell), так и среды промежуточного слоя (DB2, CICS, IMS). Следует отметить, что программы, входящие в состав библиотек LE, делятся на две группы: резидентные и динамические. Резидентные программы при редактировании связей включаются в загрузочный модуль приложения. Они представлены в библиотечных наборах данных SCEELKED и SCEEBIND. К ним относятся, например, программы запуска и завершения. Динамические программы, размещаемые в библиотеках SCEERUN и SCEERUN2, не включаются в загрузочный код, а загружаются при вызове во время выполнения.

Объединяя средства, доступные в программах, написанных на разных языках, Language Environment устанавливает единую универсальную модель среды выполнения приложений, основанную на целом ряде понятий и терминов, которые следует освоить программисту:

  • Enclave - программа (главная программа вместе с подпрограммами);
  • Routine - подпрограмма, функция;
  • Process - программный код, данные и ресурсы, связанные с выполняющейся программой;
  • Thread - поток, независимо диспетчеризуемая часть процесса;
  • Local data - локальные данные подпрограммы;
  • External data - данные, доступные для любых элементов анклава.

Средства разработки пакетного режима

Традиционный способ разработки программ, применяемый программистами в течение десятилетий, основан на использовании средств пакетного режима, реализуемых в сеансе TSO/E или ISPF/PDF. Ключевым элементом данного способа является использование стандартных процедур JCL, хранящихся в системной библиотеке SYS1.PROCLIB и предназначенных для компиляции, редактирования связей и исполнения различных HLL-программ. В таблице 5.9 представлен список некоторых таких процедур.

Таблица 5.9. Стандартные процедуры для разработки приложений
Язык программирования Компиляция Компиляция и редактирование Компиляция, редактирование и выполнение
HL Assembler ASMAC ASMACL ASMACLG
C++ CBCC CBCСB, CBCCL CBCCBG, CBCCLG
C EDCC EDCСB, EDCСL EDCCBG, EDCСLG
COBOL IGYWC IGYWCL IGYWCLG
Pl/1 IEL1C IEL1CL, IBMZCB IEL1CLG, IBMZCBG

Процедуры, предназначенные только для компиляции (имя процедуры заканчивается символом "C"- Compile), служат для создания и сохранения объектного модуля программы. Процедуры компиляции и редактирования служат для создания загрузочного модуля и сохранения его в библиотеке. Символы "CL" или "CB" в имени процедуры указывают на применение соответственно стандартного редактора связей Linkage Editor или редактора Binder. Последняя группа процедур (имена заканчиваются на "CLG" или "CBG") предназначена для выполнения программы, представленной в исходном коде, причем объектный и загрузочный модули могут не сохраняться в постоянных наборах данных.

В качестве примера использования каталогизированной процедуры рассмотрим процедуру ASMACLG, предназначенную для компиляции, редактирования связей и выполнения ассемблерной программы, представленной в виде исходного модуля [ 5.29 ] . Текст процедуры приведен на рис. 5.61.

Процедура ASMACLG состоит из трех шагов. На первом шаге ( C ) вызывается компилятор ассемблера ASMA90, на втором шаге ( L ) - редактор связей IEWL, а на третьем ( G ) - запускается созданный загрузочный модуль. Процедура не содержит символических параметров, поскольку необходимые средства настройки доступны через модификацию DD и EXEC операторов. С помощью модификации операторов DD можно определить собственные наборы данных для размещения исходного текста программы ( C.SYSIN ), объектного ( C.SYSLIN ) и загрузочного ( L.SYSLMOD ) модулей, исходных данных программы ( G.SYSIN ). Для задания требуемого набора опций компилятора и редактора связей следует модифицировать параметр PARM соответствующего оператора EXEC ( PARM.C и PARM.L ).

Каталогизированная процедура ASMACLG

Рис. 5.61. Каталогизированная процедура ASMACLG

Рассмотрим некоторые варианты применения процедуры ASMACLG при разработке ассемблерных программ:

  1. исходный модуль и исходные данные разрабатываемой программы представлены во входном потоке:
    //TEST	JOB	...
    //			EXEC	ASMACLG,PARM.C=LIST,PARM.L=NOMAP
    //C.SYSIN	DD *
    строки исходной программы
    ...
    /*
    //G.SYSIN	DD *
    исходные данные
    ...
  2. исходный модуль и исходные данные представлены в заранее подготовленных каталогизированных наборах данных USER.ASM и USER.DATA:
    //TEST	JOB	...
    //			EXEC	ASMACLG,PARM.C=LIST,PARM.L=NOMAP
    //C.SYSIN	DD DSN=USER.ASM(PRG3),DISP=OLD
    //G.SYSIN	DD DSN=USER.DATA(TABL1),DISP=OLD

При работе в среде ISPF/PDF текст задания формируется с помощью текстового редактора EDIT. Запуск задания можно производить прямо из редактора с помощью команды SUBMIT. Отчет о выполнении задания можно получить и просмотреть либо с помощью утилиты Outlist, либо средствами компонента SDSF.

< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Андрей Скурихин
Андрей Скурихин
Россия, Санкт-Петербург, Санкт-Петербургский государственный электротехнический университет (ЛЭТИ), 1997