Jump to content

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

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

Язык управления ( CL ) — это язык сценариев, первоначально созданный IBM для System/38. средства управления программами [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('Моя программа.') 

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

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

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

Подсказка

[ редактировать ]

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

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

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

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

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

Справка по командам

[ редактировать ]

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

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

[ редактировать ]

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

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

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

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

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

Находим правильную команду

[ редактировать ]

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

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

Пример кода

[ редактировать ]

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

PGM (&В&ТИП)   DCL &IN *CHAR 6   DCL &ВЫХОД *CHAR 8   DCL &ТИП *СИМВОЛ 1   ЕСЛИ (&ТИП = J) +      ДЕЛАТЬ         CVTDAT DATE(&IN) TOVAR(&OUT) FROMFMT(*MDY) +                TOFMT(*ИЮЛ) TOSEP(*НЕТ)      ЭНДДО   ИНАЧЕ ЕСЛИ (&ТИП = M) +      ДЕЛАТЬ         CVTDAT DATE(&IN) TOVAR(&OUT) FROMFMT(*JUL) +                TOFMT(*MDY) TOSEP(*НЕТ)      ЭНДДО   SNDPGMSG MSG('IN=' || &IN || ' OUT=' || &OUT) +             ТИП СООБЩЕНИЯ(*КОМП)ЭНДПГМ   

См. также

[ редактировать ]
  1. ^ «Справочное руководство по языку управления IBM System/38» (PDF) . ИБМ. 10 сентября 1982 г. Проверено 24 марта 2021 г. [ постоянная мертвая ссылка ]
  2. ^ itjungle.com
  3. ^ IBM.com
  4. ^ Мейерс, Брайан (1997). Программирование на языке управления для AS/400 (2-е изд.). Пресса 29-й улицы. ISBN  9781882419760 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 82d6b6aa630f424f8a6883c4389e5c94__1703237340
URL1:https://arc.ask3.ru/arc/aa/82/94/82d6b6aa630f424f8a6883c4389e5c94.html
Заголовок, (Title) документа по адресу, URL1:
Control Language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)