メニューボタン
IBMi海外記事2013.03.21

API を使用して TCP/IP 処理ジョブをトラブルシューティングする

Carsten Flensburg 著

API プログラマーの経験がある方なら、IT 運用スタッフ・メンバーが、対象ビジネスに適切でタイムリー、かつ限定的な IT 支援を提供できるようにするため、あなたの専門知識を必要としている状況に出くわしたことがあると思います。明確に成長を続ける分野の 1 つに IBM i プラットフォームでの TCP/IP インフラストラクチャーがあります。これは、多数のサブシステムおよびサーバー・ジョブに依存し TCP/IP対応サービス (FTP、HTTP、Telnet、SMTP、POP、SNMP など) を利用している多数のクライアント、およびアプリケーションの安定的で高いパフォーマンス性を発揮したランタイム環境を確保しています。

しかし、TCP/IP 問題の根本原因を突き止めるのは困難ですが、やりがいがあるケースが多いです。TCP/IP スタックの開始と実行には、多数の関係するシステム・ジョブによる相互努力が必要であり、その相関関係と機能の文書化は十分とは言えません。さらに、これらのシステム・ジョブによるワークロードの命名と分割方法は、リリースごとに変わります。私の経験に基づいて、すべての TCP/IP 開始ジョブをリストにし、また該当の CL コマンドへアクセスできるユーティリティーを構築し、運用スタッフが、簡単に TCP/IP 処理ジョブをモニターし、トラブルシューティングできるようにしました。スタッフ・メンバーが TCP/IP インフラストラクチャーの問題や障害を積極的に特定し、是正できるようにすることで、メンバーの効率が上がり、ビジネス活動へのマイナスの影響を減らします。

WRKTCPJOB コマンド

私の努力の最終結果は Work with TCP/IP Startup Jobs (WRKTCPJOB) コマンドです。WRKTCPJOB は Open List of Jobs (QGYOLJOB) API に基づいています。この API は、私の調査にしたがって、 TCP/IP スタックおよび関連サービスおよびインターフェイスを開始させる IBM i 7.1上のジョブの名前が入ったテーブルを採用しています。

WRKTCPJOB コマンド処理プログラムは、すべての IBM i で無償提供される SQL CLI API によって、 TCP/IP ジョブ・テーブルにアクセスします。私は、以前の記事で SQL CLI API について説明したことがありますが、そのほとんどは *OUTFILE 出力オプションを備えた CL コマンドによりテーブルを作成し、必要に応じてデータをテーブルに書き込むといった面から執筆したものでした。この記事では、SQL CLI API を利用して ILE RPG プログラムのテーブル・データを読み取る方法、Run SQL Statements (RUNSQLSTM) コマンド (または、さらに言うなら他の SQL ステートメント処理インターフェイス) により実行された SQL DDL ソース・ステートメントを使用して、該当のテーブルを作成し、データを登録する方法について説明します。

SQL CLI API を使用してテーブル・レコードをプログラム変数に読み込むには、次の手順に従います。

  1. SQL 環境を割り当て、SQLAllocEnv() API を使用して環境ハンドルを返します:
  2. 図1 に示すように SQLSetEnvAttr API を使用して環境属性を設定します。
  3. SQLAllocConnect() API を利用して接続ハンドルを割り当てます:
  4. 図2 に示すように SQLSetConnectAttrI() API を使用して接続属性を設定します。
  5. SQLConnect() API を使用して、データ・ソースに接続します:
  6. SQLAllocStmt() API を使用して新しい SQL ステートメント・ハンドルを割り当てます:
  7. SQL ステートメント変数を設定します:
  8. SQLExecDirect() API により SQL ステートメントを直接実行します:
  9. 手順 7 で選択した列ごとに、SQLBindCol() API を実行し、図 3 に示すように列を対応するアプリケーション変数にバインドします。
  10. テーブル列データをプログラム変数に 1 レコードずつ読み込みます:
  11. SQL CLI ハンドルを割り当て解除し、切断します:

テーブル作成手順

前述の例で読み込んでいるテーブルを作成するには、DDL ソース・メンバー CBX257D の次の SQL ステートメントを使用します。

  1. 図4 に示すように、ライブラリー QUSRSYS にテーブル CBX257F を作成します。
  2. テーブル・オブジェクトにテキスト説明を追加します:
  3. テーブル列ごとに列見出しを追加します:
  4. テーブル列ごとにテキスト説明を追加します:
  5. テーブルの SEQNBR 列に一意の索引を作成します:
  6. 8 つのレコードを CBX257F テーブルに挿入します。図5 に示すように、TCP/IP ジョブごとに 1 つずつ挿入します。

すべての SQL DDL ソース・ステートメントを実行するには、CBX257D ソース・メンバーを保存し、次のコマンドを実行します。

Run SQL Statements (RUN SQLSTM) コマンドは、 IBM DB2 Query Manager and SQL Development Kit for i に組み込まれています。このキットは有償製品です。

WRKTCPJOB コマンド・プロンプト

図6 に WRKTCPJOB コマンド・プロンプトを示します。コマンド・パラメーターはありませんが、プロンプト・パネルで F1 キーを押してコマンドの概要を表示できます。図7 では、WRKTCPJOB コマンドの実行により表示される Work with TCP/IP Startup Jobs リスト・パネルを示しています。リストされたジョブの中には、TCP/IP スタックが動作している限り実行されるものもあれば、起動プロセス時のみ使用されるジョブもあります。

リスト・オプションには、選択された名前別に、アクティブおよび完了を含め、すべてのジョブをリストするオプション 6=Work with jobs があります。オプション 8=Spooled files では完了したジョブのジョブ・ログが表示され、オプション 10=Job log ではアクティブなジョブのジョブ・ログが表示されます。または、ジョブのステータスに関係なく任意のジョブのジョブ・ログを表示するには、カーソルをジョブ名に置いて、F22 キーを押します。オプション 12=Display job description は、選択されたジョブに関連するジョブの説明を表示します。

F6 キーを押すと、QSYSOPR メッセージ・キューの TCP/IP の片割れである、メッセージ・キュー QTCP が表示されます。QTCP は、最新の IPL 以降の TCP/IP 動作状態およびイベントの概要を簡単に表示します。F10 キーを押すと、TCP/IP Network Status (WRKTCPSTS) メニューにアクセスでき、F16 キーを押すと Configure TCP/IP (CFGTCP) メニューが表示されます。

また、F19 キーと F20 キーを押すと Work with NetServer (WRKNETSVR) コマンドおよび Work with Server Jobs (WRKSVRJOB) コマンドが、それぞれ呼び出されます。すべてのファンクション・キー、リスト・オプション、コマンド、メニューの文書は、関連するヘルプ・テキスト・パネル・グループをご覧ください。

あわせて読みたい記事

PAGE TOP