Язык управления

редактировать
Язык управления
Парадигма императив
Разработано IBM
Разработчик IBM
Впервые появился 1978 ; 43 года назад ( 1978)
Операционные системы Средство программы управления, IBM i
Лицензия Проприетарный
Под влиянием
Язык управления заданиями, PL / I
Под влиянием
Windows PowerShell

Язык управления ( CL) является язык сценариев, первоначально созданный IBM для System / 38 Программа управления фондом, а затем используется в OS / 400 (теперь известный как IBM I). Он похож на язык управления заданиями IBM и состоит из набора командных объектов (* CMD), используемых для вызова традиционных программ или получения справки о том, что эти программы делают. CL также можно использовать для создания программ CL (соответствующих сценариям оболочки ), где есть дополнительные команды, которые обеспечивают функциональность, аналогичную программной (IF / ELSE, объявление переменных, ввод файла и т. Д.)

Хотя CL - это язык сценариев для системного администрирования, он используется в основном для создания скомпилированных программ. На самом деле использование интерпретируемых сценариев CL с помощью команды SBMDBJOB крайне ограничено.

Разработчики IBM написали тысячи команд для выполнения задач системного уровня, таких как компиляция программ, резервное копирование данных, изменение конфигурации системы, отображение сведений о системных объектах или их удаление, но команды не ограничиваются проблемами системного уровня и могут быть составлены для пользовательских приложений. также.

СОДЕРЖАНИЕ
  • 1 Команды и программы
  • 2 Синтаксис
  • 3 Подсказка
  • 4 Справка по командам
  • 5 Создание новых команд
  • 6 Поиск правильной команды
    • 6.1 Стандартизированные сокращения
    • 6.2 Меню группировки команд
    • 6.3 Выбор команды
  • 7 Пример кода
  • 8 См. Также
  • 9 ссылки
Команды и программы

Параметры ( аргументы командной строки ), определенные в основных процедурах всех традиционных программ System / 38 и AS / 400, представляют собой жестко закодированные списки, состоящие из параметров, которые могут быть числовыми, буквенно-цифровыми, логическими и т. Д., И порядка, в котором параметры передаются важно. Это резкое отличие от миров Unix и DOS, где список параметров в сценариях оболочки Unix и программах на языке C представляет собой набор или массив символьных указателей, и чаще всего параметры не зависят от позиции.

Решением разработчика этой проблемы стал командный объект (* CMD). Хотя параметры команды можно указывать в любом порядке, каждый параметр определен для передачи в программу в определенном порядке. Программист также может определить, среди прочего, тип данных параметра, уникальное имя параметра, описательный текст (для подсказки), значение по умолчанию (используется, только если параметр не указан во время выполнения), если значения ограничены определенным установить или диапазон, если введенные данные должны быть изменены на другое значение перед вызовом программы и т. д.

По сути, команда называет одну программу, которую нужно вызывать, когда пользователь вводит или запрашивает команду и нажимает клавишу Enter. Команда принимает все параметры, введенные пользователем, и параметры, которые не вводятся пользователем, и создает список параметров, который она передает программе при ее вызове.

Синтаксис

BNF для более упрощенного синтаксиса команды CL будет определяться следующим образом:

 lt;CL-commandgt;::= command-name [lt;positional-parameter-listgt;] [lt;named-parameter-listgt;] lt;positional-parameter-listgt;::= lt;parameter-valuegt; [lt;positional-parameter-listgt;] lt;named-parameter-listgt;::= parameter-name "(" lt;parameter-element-listgt; ")" [lt;named-parameter-listgt;] lt;parameter-element-listgt;::= lt;parameter-valuegt; [lt;parameter-element-listgt;] lt;parameter-valuegt;::= CL-name | qualified-CL-name | "*"special-value | generic-CL-name"*" | "'"alphanumeric-value"'" | numeric-value | "X'"hexadecimal-value"'"

Приведенные выше элементы, оканчивающиеся на -name, следуют соглашениям об именах объектов, что, вообще говоря, означает, что имя начинается с буквы и может иметь длину до десяти символов. (Команды CL также нечувствительны к регистру.)

Хорошим примером типичной команды CL является приведенная ниже команда Изменить программу (CHGPGM):

CHGPGM MYPGM OPTIMIZE(*FULL) RMVOBS(*BLKORD *PRCORD) TEXT('My program.')

Вышеупомянутая команда передает четыре параметра программе, которая выполняет обработку изменений программы, а именно:

  • MYPGM: позиционный параметр (PGM) и единственный обязательный параметр. В данном случае это название изменяемой программы. Позиционные параметры всегда на первом месте. После появления именованного параметра все последующие параметры должны называться параметрами.
  • OPTIMIZE (* FULL): именованный параметр, определяющий единственный элемент, который является специальным значением. В этом случае программа будет полностью оптимизирована.
  • RMVOBS (* BLKORD * PRCORD): именованный параметр (Remove Observability), указывающий несколько специальных значений. В этом случае говорится, что нужно удалить из программы два вида данных профилирования.
  • ТЕКСТ ('Моя программа.'): Другой именованный параметр, указывающий одно буквенно-цифровое значение. В этом случае изменяется описательный текст программы.

На самом деле система будет передавать намного больше параметров, чем четыре указанных выше. Это связано с тем, что остальные параметры команды CHGPGM не были указаны, поэтому вместо них будут переданы значения по умолчанию. Для каждого параметра, кроме параметра PGM, значение по умолчанию * SAME, то есть не изменять его.

Побуждение

Все команды CL можно запрашивать непосредственно из командной строки или из исходного кода программы CL, набрав команду и нажав функциональную клавишу F4. Команду OS / 400 также можно запросить, набрав? перед командой. (Это полезно в интерактивной программе, которая воспроизводит командную строку, уже заполнив некоторые значения.)

Затем система представит экран с набором параметров, которые программа принимает / требует (необходимые параметры обычно выделены).

Обязательные параметры указываются первыми, а параметры со значениями по умолчанию, предоставленными системой, - последними. Чтобы увидеть все параметры, нажмите F10. Если какой-либо один выбор требует дальнейшего выбора, они будут показаны, когда вы выберете это значение для этого параметра, появившись на экране.

Дополнительные возможности подсказок позволяют программисту находить допустимые значения для каждого параметра. Для этого во время запроса пользователь переместит курсор в нужное поле параметра и снова нажмет F4. Затем система отобразит экран с описанием типа требуемых входных данных и доступным списком допустимых значений.

Чтобы ввести более длинное имя или расширить список, чтобы можно было вводить дополнительные значения, введите знак плюса вместо значения. (Как при перечислении имен объектов, которые нужно сохранить или восстановить.)

Команда help

Справка, чувствительная к курсору, также может предоставляться по командам, но это не обязательно. Если была предоставлена ​​справка, можно просмотреть справку по параметру, переместив курсор в поле желаемого параметра и нажав F1 (справка). Чтобы получить справку по самой команде (и всем ее параметрам), пользователь нажимал бы F1 в любом месте экрана подсказки, а затем нажимал бы F2 (расширенная справка).

Создание новых команд

Новые команды могут быть созданы для вызова несистемных программ, и они будут работать точно так же, как встроенные. Язык определения команд описан в Руководстве программиста CL.

Рекомендуется создавать экраны справки для новых команд и их параметров. Все экраны справки используют объекты групп панелей (* PNLGRP), и они могут быть созданы с использованием языка UIM, описанного в руководстве по программированию отображения приложений IBM AS / 400.

Начиная с версии V5R3 операционной системы, был добавлен новый, гораздо более простой способ создания справки: запустить команду

 GENCMDDOC CMD(MYLIB/MYCMD) TODIR('/QSYS.LIB/MYLIB.LIB/QPNLSRC.FILE) GENOPT(*UIM)

Будет автоматически сгенерирована скелетная группа панелей UIM, включающая все параметры, описанные командой. Полученный файл можно отредактировать (seu, wdsc, rdi), затем скомпилировать с помощью команды CRTPNLGRP и, наконец, связать с командой через CHGCMD HLPPNLGRP ().

Поиск правильной команды

В V7R3 содержится 2262 встроенных команды IBM, но найти их не так уж и сложно из-за нескольких конструкций системы, облегчающих жизнь. К этим конструкциям для экономии труда относятся: стандартизированные сокращения, меню группировки команд и выбор команд.

Стандартизированные сокращения

Разработчики IBM стандартизировали сокращения, используемые для создания имен команд. Глаголы, такие как изменение, всегда отображаются как CHG, отображаются как DSP, работают как WRK, создают как CRT и т. Д. Такие объекты, как программа, всегда являются PGM, пользователь - USR, модуль - MOD, сервер - SVR и т. Д. Вы можете увидеть все возможные глаголы. и тема, используемая в системе в меню ГЛАГОЛ и ТЕМА, просто введите команды GO VERB или GO SUBJECT.

Точно так же «Программирование на языке управления» было сокращенно CLP, и, соответственно, исходный тип был CLP. С введением модели программирования ILE тип источника был изменен на «CLLE».

Меню группировки команд

Меню VERB и SUBJECT являются частью того, что называется меню группировки команд. Каждому трехбуквенному (или четырехбуквенному) сокращению посвящено меню, которое начинается с букв CMD. Итак, чтобы увидеть все команды CHG, пользователь должен выполнить команду GO CMDCHG. Для программных команд меню будет CMDPGM.

Помимо меню группировки команд есть и другие меню. К начальной точке системы меню можно получить доступ, нажав F4 в пустой командной строке.

Выбор команды

Если кто-то знает только часть команды или используется стороннее программное обеспечение, команды не соответствуют стандарту сокращений AS / 400, вы должны ввести ту часть команды, которая известна, прикрепив звездочку (чтобы generic) и нажмите клавишу ВВОД. Затем система отобразит список команд в списке библиотеки задания, которые соответствуют только что набранным общим именам. Затем можно пролистать список в поисках нужной команды, а затем выбрать ее с помощью опции 1.

В фоновом режиме система использует команду SLTCMD для выполнения этой функции. Если кто-то хочет выбрать все команды в библиотеке, запросите эту команду и введите специальное значение * ALL.

Образец кода

Ниже приведен пример программирования на языке CL. Программа интерактивно конвертирует даты из юлианского в MDY и наоборот. Результаты отображаются в строке 24 терминала. Он принимает два параметра. amp;INПараметр, который представляет собой строку даты, чтобы быть преобразованы. Если это юлианская строка, она должна быть в формате YYNNN, где YY - номер года, а NNN - номер дня в году. Если строка MDY, она должна быть в формате MMDDYY. Второй параметр - amp;TYPэто тип даты, в которую нужно преобразовать. Это должно быть «J» (юлианский) или «M» (MDY). Например: команда CALL PGM(ICVTDATC) PARM('04180' 'M')преобразует юлианскую дату 04180 в 062804 (28 июня 2004 г.).

PGM (amp;IN amp;TYP) DCL amp;IN *CHAR 6 DCL amp;OUT *CHAR 8 DCL amp;TYP *CHAR 1 IF (amp;TYP = J) + DO CVTDAT DATE(amp;IN) TOVAR(amp;OUT) FROMFMT(*MDY) + TOFMT(*JUL) TOSEP(*NONE) ENDDO ELSE IF (amp;TYP = M) + DO CVTDAT DATE(amp;IN) TOVAR(amp;OUT) FROMFMT(*JUL) + TOFMT(*MDY) TOSEP(*NONE) ENDDO SNDPGMMSG MSG('IN=' || amp;IN || ' OUT=' || amp;OUT) + MSGTYPE(*COMP) ENDPGM
Смотрите также
Рекомендации
Последняя правка сделана 2023-03-20 10:59:06
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте