Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


Delphi/400 コンポーネント リファレンス【TAS400】

『コンポーネント リファレンス』シリーズでは、Delphi/400の
ネイティブコンポーネントについて1記事1コンポーネントずつ解説します。

本記事では、TAS400について解説します。


概要

  • 継承
    • TObject > TPersistent > TComponent > TAS400
  • ユニット
    • SCDconn
  • 概要
    • このクラスは、PC と IBM i の間の通信(特に接続と切断)を管理するために設計されています。
      このクラスをインスタンス化すると、Active プロパティを True に設定することによって、
      ルーターと ScreenDesigner/400 の両方のインストールを検証することができるようになります。
    • TAS400 は、トランザクションを管理する TTransaction400 クラスのオブジェクトで定義されるトランザクション制御をアクティブまたは非アクティブに変更することもできます。

プロパティ

  • Active
    • Boolean型
    • Active プロパティは、AS/400 への接続状態の確立または変更を行います。
      このプロパティを False から True に変更すると、AS/400 への接続が確立されます。
      通常の接続の場合は、AS/400 上でジョブが開始されます。
    • 多くの場合、このジョブは QCMN(ユーザーのシステムの定義に依存します) プール内にあります。ジョブの状態は CPCW です。
    • このクラスのインスタンスをもう 1 つ使うなどして AS/400 への 2 番目の接続を開始すると、新しいインスタンスは最初の接続を使用し、AS/400 上では変化は生じません。
    • このプロパティを True から False に変更すると、前の場合のように接続が 2 つ確立されているのでなければ、プログラムは AS/400 への接続を切断します。
      接続が 2 つ確立されていた場合は、両方の接続の Active プロパティが False に設定されたときにのみ切断され、AS/400 サブシステム下のジョブが終了します。
      Active プロパティをもう一方の状態に変更した時に、接続不能などで異常終了となった場合、TAS400 クラスは例外を生成し、管理可能な ECO400Error クラスの例外を発行します。
    • オブジェクトを廃棄すると接続は自動的に切断されるので、プログラムの最後で Active プロパティを False に変更する必要はありません。
      プログラムの実行中にユーザーが PC の電源を切ってしまったり、ネットワーク接続が失われた場合、オブジェクトは異常状態で廃棄されます。
      AS/400 への接続は切断されませんが、AS/400 はその接続のコントロールを失い、AS/400 上のジョブは停止します。
      AS/400 が何らかの理由でシステムダウンした場合、PC は次に AS/400 にアクセスしようとしたときに APPC エラーを受け取ります。
      PC はフリーズせず、APPC エラーを処理してアプリケーションを停止できます。
  • BufferSize
    • Integer型
    • BufferSize プロパティは、APPC 通信用ルータの割り当て済みのバッファサイズを定義します。ミドルウェアは、通信用に同じサイズのバッファを割り当てます。サイズは、272 から 32767 の範囲内でなければなりません。
    • バッファサイズによって応答時間はほとんど変わりませんが、このバッファは PC のメモリ割り当てにおいて一定の役割を果たします。デフォルト値は 5000 で、必要なら小さくすることができます。BufferSize プロパティの値は、AS/400 に接続する時点で使用されます。
  • KeySeparator
    • Char型
    • KeySeparator プロパティは、キーデリミタとして使用される文字を定義します。
    • 複合キーを操作する場合は、フィルタを定義するときやファイルにキー順でアクセスする時に、このデリミタ文字を使わなければなりません。デフォルトではセミコロン(;)に設定されています。セミコロンがキーの中に含まれる可能性がある場合は、KeySeparator プロパティを適切な値に変更した方がよいでしょう。
    • KeySeparatorプロパティは、どの時点でも変更できます。ただし、すべての TAS400 オブジェクトで同じデリミタを使用してください。
  • PLUAlias
    • String型
    • PLUAlias プロパティは、特定の AS/400 への接続を確立するために使用します。このプロパティを記述しなかった場合は、デフォルトの AS/400 が選択されます。
    • アクセス可能な AS/400 のリストは、Delphi のオブジェクトインスペクタで見ることができます。このプロパティは、接続時に使用されます。
  • PWD
    • String型
    • PWD プロパティは、AS/400 への接続時にパスワードを渡すために使用されます。
    • PWD プロパティはパブリッシュされず、接続時に使用されます。
  • Transaction
    • TTransaction400コンポーネントを指定
    • Transaction プロパティが空白でない場合は、トランザクションの開始、終了、および管理に使用されます。BeginTrans、EndTrans、Commit、RollBack の各メソッドが使用可能になります。
    • 詳細については、それらの機能の説明および TTrasaction400 クラスの各メソッドの説明を参照してください。
  • UserID
    • String型
    • UserID プロパティは、AS/400 への接続時にユーザーIDを渡すために使用されます。
    • UserID プロパティはパブリッシュされず、接続時に使用されます。

メソッド

  • BeginTrans
    • 引数:なし
    • 戻値:エラーコード(Integer)
    • BeginTrans メソッドはトランザクションを開始します。トランザクションモードで管理するファイルは、後でトランザクション制御モードでオープンしなければなりません。
    • メモ: このメソッドは、接続時に Transaction プロパティがヌルでない場合は、自動的に実行されることに注意してください。
      BeginTrans メソッドが失敗すると、例外エラー ECO400Error が生成されます。
  • Commit
    • 引数:Descrip: String
    • 戻値:エラーコード(Integer)
    • Commit メソッドは、トランザクション制御モードでオープンしていたファイルに対して行われた変更を確定します。
      このメソッドの引数は、コミットトランザクションの定義に使われるラベルです。
    • Commit メソッドが失敗すると、例外エラー ECO400Error が生成されます。
      戻りコードは、エラーコードを表します。
  • Connect
    • 引数・戻値:なし
    • Connect メソッドは接続を確立します。これは、Active:=True に対応します。
      詳細については、「Active」プロパティを参照してください。
    • 戻りコードは、エラーコードを表します。
  • DisConnect
    • 引数・戻値:なし
    • Disconnect メソッドは接続を切断します。これは、Active:=False に対応します。
      詳細については、 Active プロパティ を参照してください。
    • 戻りコードは、エラーコードを表します。
  • EndTrans
    • 引数:なし
    • 戻値:エラーコード(Integer)
    • EndTrans メソッドはトランザクションを終了させます。トランザクション制御モードでアクセスしていたファイルは、EndTrans メソッドを実行する前にクローズしておかなければなりません。
    • メモ : このメソッドは、接続の切断時に Transaction プロパティがヌルでない場合は、自動的に実行されることに注意してください。
      EndTrans メソッドが失敗すると、例外エラー ECO400Error が生成されます。
      戻りコードは、エラーコードを表します。
  • GetHandle
    • 引数:なし
    • 戻値:接続ハンドル(Integer)
    • 接続ハンドルを返します。
  • Rollback
    • 引数:なし
    • 戻値:エラーコード(Integer)
    • RollBack メソッドは、トランザクション制御モードでオープンしていたファイルに対して行われた変更を取り消します。
      RollBack メソッドが失敗すると、例外エラー ECO400Error が生成されます。
    • PC または AS/400 が予期しない事情でシステムダウンした場合は、サーバーレベルで RollBack が自動的に実行されます。
  • RemoteCmd
    • 引数:LaCmd: String
    • 戻値:エラーコード(Integer)
    • RemoteCmd メソッドは AS/400 コマンドを実行します。
      コマンドが実行できない場合は、例外エラー ECO400Error が生成されます。
      エラーの詳細については、AS/400 のジョブログを参照することもできます。
    • RemoteCmd メソッドからパラメータが返せない場合、返されたコードはエラーコードを表しています。
    • このメソッドを使った場合、コマンドの戻り値は取得できません。
      戻り値が必要な場合はTCmd400コンポーネントを使用します。

 

サンプルロジック(BeginTrans)

  {MyAS400: TAS400;}
  {MyTransaction: TTransaction400}
  try
    MyAS400.Active:=True;
  except
  on E:ECO400Error do
    messagedlg('Connection error (' + E.ErrorCode + '):' + E.Message, mtError, [mbOK], 0);
  end;
  MyAS400.Transaction := MyTransaction;
  try
    MyAS400.BeginTrans;
  except
    on E:ECO400Error do
    begin
      messagedlg('BeginTrans problem : ' + E.Message, mtError, [mbOK], 0);
      MyAS400.Active:=False;
    end;
  end;
  MyAS400.Active := False;

 

サンプルロジック(Commit)

  {MyAS400: TAS400;}
  {MyTransaction: TTransaction400}
  MyAS400.Transaction := MyTransaction;
  try
    MyAS400.Active:=True;      {BeginTrans done}
  except
  on E:ECO400Error do
    messagedlg('Connection error (' + E.ErrorCode + '):' + E.Message, mtError, [mbOK], 0);
  end;
//...  {Delete, Insert, Update}
  MyAS400.Commit(Pchar('COMMIT: END SESSION'));
  MyAS400.Active:=False;     {EndTrans done}

 

サンプルロジック(EndTrans)

  {MyAS400: TAS400;}
  {MyTransaction: TTransaction400}
  MyAS400.Transaction := MyTransaction;
  try
    MyAS400.Active:=True;     {BeginTrans done}
  except
  on E:ECO400Error do
    messagedlg(‘Connection error (' + E.ErrorCode + '): '+ E.Message, mtError, [mbOK], 0);
  end;
  MyAS400.EndTrans;
  MyAS400.Active := False;

 

サンプルロジック(Rollback)

  {MyAS400: TAS400;}
  {MyTransaction: TTransaction400}
  MyAS400.Transaction := MyTransaction;
  try
    MyAS400.Active:=True;      {BeginTrans done}
  except
  on E:ECO400Error do
    messagedlg(‘Connection error (' + E.ErrorCode + ') : ' + E.Message, mtError, [mbOK], 0);
  end;
  // ...  {Delete, Insert, Update}
  MyAS400.RollBack;
  MyAS400.Active := False;     {EndTrans done}

 

サンプルロジック(RemoteCmd)

  {MyAS400: TAS400;}
  try
    MyAS400.Connect;
  except
  on E:ECO400Error do
    messagedlg('eConnection  error (' + E.ErrorCode + '): '+ E.Message , mtError, [mbOK], 0);
  end;
  try
    try
      MyAS400.RemoteCmd('ADDLIBLE WORKLIB');
    except
      showmessage('Library WORKLIB cannot be added!');
    end;
  finally
    MyAS400.Disconnect;
  end;

イベント

  • BeforeActivation
    • BeforeActivation イベントは、AS/400 への接続が有効(Active プロパティが True)になる直前に生成されます。
    • BeforeActivation イベントに追加されたコードは、接続の直前に実行されます。
    • Boolean 型パラメータ Cancel を True に設定すると、接続が取り消されます。
  • BeforeDeactivation
    • BeforeDeactivation イベントは、AS/400 への接続が無効(Active プロパティが False)になる直前に生成されます。
    • BeforeDeactivation イベントに追加されたコードは、AS/400への接続が切断される直前に実行されます。
    • Boolean 型パラメータ Cancel を True に設定すると、AS/400へ接続の切断が取り消されます。
  • OnActivation
    • OnActivation イベントは、AS/400 への接続が有効になる(Active プロパティが True になる)時、ファイルのオープン時、要求のオープン時に生成されます。
    • OnActivation イベントに追加されたコードまたはプログラムは、接続やオープンの直後に実行されます。
  • OnDeactivation
    • OnDeactivation イベントは、AS/400 への接続が無効になる(Active プロパティが False になる)時に生成されます。
    • OnDeactivation イベントに追加されたコードは、AS/400 への接続を切断した直後に実行されます。

 

関連リンク

 

 

※本記事に記載のヘルプは、過去の製品マニュアルからの抜粋となります。
 貴社にてご利用のバージョンにおける設定などでご不明な点がございましたら、
 サポート窓口までお問い合わせ下さい。