Command_Line предоставляет несколько подпрограмм для получения ввода от операционной системы. В пакете описана функция с именем Argument_Count, которая возвращает количество переданных параметров (ноль или больше). Также существует функция Argument, которая принимает номер аргумента (индекс) и возвращает его значение, как переменную типа String. Также в пакете имеется функция Command_Name, которая возвращает имя программы, как String; некоторые операционные системы не поддерживают этого.
Command_Line предоставляет подпрограммы для выдачи кода возврата Status_Code, принадлежащего какому-либо целому типу, операционной системе. Существует два предопределенных кода возврата: Success и Failure. Код возврата можно установить с помощью процедуры Set_Status; когда программа завершится, последнее значение, установленное процедурой Set_Status будет передано операционной системе.
Ниже приводится описание Command_Line (из RM, раздел A.15):
package Ada.Command_Line is function Argument_Count return Natural; function Argument (Number : in Positive) return String; function Command_Name return String; type Exit_Status is implementation-defined integer type; Success : constant Exit_Status; Failure : constant Exit_Status; procedure Set_Exit_Status (Code : in Exit_Status); -- ... end Ada.Command_Line;
Вот пример использования Command_Line; Программа Show принимает в качестве аргументов список файлов и печатает их содержимое, используя пробел в качестве разделителя.
with Ada.Command_Line, Text_IO, Ada.Strings.Unbounded, Ustrings; use Ada.Command_Line, Text_IO, Ada.Strings.Unbounded, Ustrings; procedure Show is -- Выбираем каждый аргумент из коммандной строки и отображаем -- каждый файл с выделением. procedure Show_File(Filename : String) is -- Открываем "Filename" и отображаем его с выделением. File : File_Type; Input : Unbounded_String; begin Put("Printing file "); Put_Line(Filename); Open(File, In_File, Filename); while (not End_Of_File(File)) loop Get_Line(File, Input); Put(' '); -- выделение. Put_Line(Input); end loop; Close(File); end Show_File; begin -- procedure Show if Argument_Count = 0 then Put_Line(Current_Error, "Error - No file names given."); Set_Exit_Status(Failure); else -- Открываем каждый из файлов и отображаем его. for Arg in 1 .. Argument_Count loop Show_File(Argument(Arg)); end loop; end if; end Show;
Пакет Command_Line может оказаться бесполезным, если операционная система отсутствует, так как в этом случае не с кем и нечем обмениваться.
К этому разделу упражнение отсутствует.
Вы можете перейти к следующему разделу.
Вернуться к предыдущему разделу | Вернуться к содержанию Урока 9 |
---|
David A. Wheeler (dwheeler@ida.org)
Исходная копия этого документа находится по адресу
"http://www.adahome.com/Tutorials/Lovelace/s9sf.htm".
Исходная копия перевода размещена на сайте http://www.ada-ru.org
Перевод: Юрий Королев
Общая редакция перевода: Г.Ю. Сисюк