甲府方重信Blog

...Shigenobu Koufugatas Blog

  • Increase font size
  • Default font size
  • Decrease font size
Error
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
Home 業務日誌 Adaプログラミング Adaチュートリアル セクション9.4 Command_Lineパッケージ

Adaチュートリアル セクション9.4 Command_Lineパッケージ

E-mail Print PDF

セクション 9.4 - Command_Lineパッケージ

オペレーティングシステムとAdaプログラムの間には、特別な種類の入出力があります。この入力は、コマンドラインからの情報であり、出力は終了ステータスと呼ばれているものです。Ada 83にこれは容易な方法でしたが、標準的な方法ではありませんでした。Ada 95は、このCommand_Lineと呼ばれる入出出力を実行するための標準パッケージが追加されました。Command_Lineは、C言語のargc、argv、exitにとてもよく似ています。

Command_Lineはオペレーティングシステムからの入力に対して、いくつかのサブプログラムを提供します。このパッケージはArgument_Countという名前の関数を定義しており、与えられた引数の数を返します。(これは0かそれ以上となります) また、Argumentと呼ばれる関数を提供し、これは引数の数をインデックスとし、引数の値をStringとして返します。また、Command_Name関数が提供され、これはプログラムの名前をStringとして返します。いくつかのオペレーティングシステムはこれをサポートしていません。

Command_Lineは、オペレーティングシステムへのStatus_Codeを返すためのサブプログラムを提供します。これは整数型となります。事前定義のStatus_Codes、SuccessとFailureがあります。プログラマーはSet_Statusプロシージャーを仕様して、Status_Codeを設定することが出来ます。プログラムが終了するとき、Set_Statusにおいて最後の値を設定すると、これがオペレーティングシステムに返されます。

ここでは、Command_Lineの定義を掲載します。 (RM section 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
-- Take each command line argument as a filename and display
-- each file, indented.

  procedure Show_File(Filename : String) is
  -- Open "Filename" and display it, indented.
    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(' ');          -- indent.
        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
    -- Open each file and show it.
    for Arg in 1 .. Argument_Count loop
      Show_File(Argument(Arg));
    end loop;
  end if;
end Show;

Command_Lineパッケージは、オペレーティングシステムが存在しない場合には有益ではないかもしれません。そのような場合にはコミュニケーションを取るものがないからです。

出典: http://www.adahome.com/Tutorials/Lovelace/s9sf.htm

Last Updated on Monday, 16 January 2012 10:55  

ニュース速報

何千とある無料のエクステンションのライブラリより、あなたはサイトを拡張するために必要とするものを追加できます。 今すぐ Joomla! エクステンション ライブラリに目を通してください。