stringtranslate.com

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

Control Language ( CL ) — это язык сценариев, изначально созданный IBM для System/38 Control Program Facility [1] и позже использовавшийся в OS/400 (теперь известный как IBM i). Он имеет сходство с IBM Job Control Language и состоит из набора объектов команд (*CMD), используемых для вызова традиционных программ или получения справки о том, что делают эти программы. CL также может использоваться для создания программ CL (соответствующих сценариям оболочки ), где есть дополнительные команды, которые обеспечивают функциональность, подобную программе (IF/ELSE, объявление переменных , ввод файла и т. д.)

Хотя CL является языком сценариев для системного администрирования, он используется в основном для создания скомпилированных программ. Использование интерпретируемых сценариев CL через команду SBMDBJOB [2] на самом деле крайне ограничено.

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

Команды и программы

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

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

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

Синтаксис

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

 < CL-команда >  ::= имя-команды [ < позиционный-список-параметров > ] [ < именованный-список-параметров > ] < позиционный-список-параметров >  ::=  < значение-параметра > [ < позиционный-список-параметров > ] < именованный-список-параметров >  ::= имя-параметра "(" < список-элементов-параметров > ")" [ < именованный-список-параметров > ] < список-элементов-параметров >  ::=  < значение-параметра > [ < список-элементов-параметров > ] < значение-параметра >  ::= имя-CL | квалифицированное-CL-имя | "*"специальное значение | общее-CL-имя"*" | "'"буквенно-цифровое-значение"'" | числовое значение | "X'"шестнадцатеричное-значение"'"

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

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

CHGPGM MYPGM OPTIMIZE(*FULL) RMVOBS(*BLKORD *PRCORD) TEXT('Моя программа.')

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

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

Подсказка

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

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

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

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

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

Помощь по команде

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

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

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

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

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

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

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

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

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

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

Разработчики IBM стандартизировали сокращения, используемые для создания имен команд. Глаголы, такие как change , всегда отображаются как CHG , display как DSP , work как WRK , create как CRT и т. д. Субъекты, такие как program, всегда отображаются как PGM , user как USR , module как MOD , server как SVR и т. д. Вы можете увидеть все возможные глаголы и субъекты, используемые в системе, в меню VERB и SUBJECT , просто введите команды GO VERB или GO SUBJECT.

Аналогично, "Control Language Programming" был сокращен до CLP, и исходный тип был соответственно CLP. С введением модели программирования ILE исходный тип был изменен на "CLLE". [4]

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

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

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

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

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

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

Пример кода

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

ПГМ (&IN &TYP) DCL &IN *СИМВОЛ 6 DCL &OUT *СИМВОЛ 8 DCL &TYP *СИМВОЛ 1 ЕСЛИ (&ТИП = J) + ДЕЛАТЬ CVTDAT ДАТА(&IN) TOVAR(&OUT) FROMFMT(*MDY) + TOFMT(*ИЮЛ) TOSEP(*НЕТ) КОНЕЦ ИНАЧЕ ЕСЛИ (&ТИП = М) + ДЕЛАТЬ CVTDAT ДАТА(&IN) TOVAR(&OUT) FROMFMT(*JUL) + TOFMT(*MDY) TOSEP(*NONE) КОНЕЦ SNDPGMMSG MSG('IN=' || &IN || ' OUT=' || &OUT) + MSGTYPE(*COMP)ENDPGM 

Смотрите также

Ссылки

  1. ^ "Справочное руководство по языку управления IBM System/38" (PDF) . IBM. 1982-09-10 . Получено 2021-03-24 .[ постоянная мертвая ссылка ]
  2. ^ itjungle.com
  3. ^ IBM.com
  4. ^ Мейерс, Брайан (1997). Программирование языка управления для AS/400 (2-е изд.). 29th Street Press. ISBN 9781882419760.