Работа с командной строкой в языке Ada
Пакет Ada.Command_Line реализует следующие функции для работы со значениями аргументов командной строки:
- возврат количества аргументов командной строки в виде N >= 0
- возврат значения любого аргумента в виде строки
- возврат имени файла программы в виде строки
Функция Argument_Count
Возвращает количество переданных в программу аргументов если они доступны, иначе возвращает 0. Сравнительно с языком C эта функция возвращает argc - 1.
Параметры вызова функции: нет.
Тип возвращаемых данных: Natural.
Функция Argument
Возвращает значение аргумента переданного в программу по его порядковому номеру. В отличие от реализации argv в языке C где возможно получить имя файла программы, используя индекс 0, данная функция нумеруется с 1 до Argument_Count и возвращает исключительно значения аргументов так, что argv[N] = Argument(N). При указании недопустимого индекса функция вызывает исключение Constraint_Error.
Параметры вызова функции: N : Positive.
Тип возвращаемых данных: String.
Функция Command_Name
Возвращает имя файла программы если это допускает ОС, аналогично конструкции argv[0] в языке C.
Параметры вызова функции: нет.
Тип возвращаемых данных: String.
Процедура Set_Exit_Status
Устанавливает статус завершения программы.
Параметры вызова процедуры: Code : Exit_Status.
Тип Exit_Status
Тип реализующий Integer константы: Success (с фактическим значением 0), Failure (с фактическим значением 1) для возврата статуса завершения программы.
Использование аргументов командной строки в библиотеках Ada в составе программ на других языках
Если основная программа реализована не на языке Ada, то необходимо инициировать значения для аргументов используемых из библиотеки на языке Ada вручную. Для примера в языке C такая инициализация выглядит так:
main(int argc, char **argv, char **envp) {
extern int gnat_argc;
extern char **gnat_argv;
extern char **gnat_envp;
gnat_argc = argc;
gnat_argv = argv;
gnat_envp = envp;
adainit();
adamain();
adafinal();
}