ユーザーズ・ガイド

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

UNIXおよびIBM i 6.1プラットフォームにおけるOracle Tuxedoシステムの使用

この章の内容は以下のとおりです。

 


ユーザー・インタフェースおよびIBM i 6.1の概念

IBM i 6.1システムのユーザー・インタフェースは完全にメニューに依存します。インタフェースではファンクション・キー[F1] - [F24]を多用します。

図3-1 IBM i 6.1プラットフォームのタスクのメイン・メニュー

IBM i 6.1プラットフォームのタスクのメイン・メニュー

コマンドラインからのプログラムの起動

メニューから実行されるほとんどすべてのアクションには、対応するコマンドラインが存在します。Oracle Tuxedoユーティリティなどの実行可能アプリケーションは、callコマンドを使用してコマンドラインから起動できます。callコマンドの構文は次のとおりです。

call pgm parm(arg1 arg2 .  .  .  )

UNIXシェルのPATHおよびLD_LIBRARY_PATH環境変数の概念はライブラリ・リストで置き換えられます。次に、コマンドの例を示します。

call hello parm('world')

これは、ライブラリ・リストでhelloプログラムを検索するリクエストです。ライブラリ・リスト内でこのプログラムを含む最初のライブラリが現行ライブラリとなり、helloプログラムがアクティブ化されます。

このアクティブ化の際、サービス・プログラム(IBM i 6.1におけるDLLまたは共有オブジェクトに対応するもの)が必要であれば、ライブラリ・リストが再度検索されます。ライブラリ・リストを表示するにはdsplibコマンドを使用し、操作するにはaddlibleおよびrmvlibleコマンドを使用します。

対話型およびバッチ・ジョブ

ジョブは実行コンテキストを定義します(プロセスとほぼ同様です)。ジョブには、対話型とバッチの2種類があります。ユーザーがシステムにサインオンすると、対話型ジョブが新規セッションに割り当てられます。すべてのcallコマンドはこのジョブ内で実行されます。wrkactjobコマンドにより、システム上のすべてのアクティブなジョブが表示されます。(UNIXシステムのpsコマンドと同等です。)バッチ・ジョブはsbmjobコマンドからサブミットできます。wrksbmjobコマンドにより、サブミットされたすべてのバッチ・ジョブが表示されます。

HFSおよびIFSファイル・システム

この項では、IBM i 6.1プラットフォームで重要な2つのファイル・システム、HFSおよびIFSについて説明します。

HFS

HFSは、従来のフラットなファイル・システムです。最上位レベルにはライブラリが含まれます。各ライブラリには、ファイル(モジュール・ファイル、プログラム・ファイル、および物理ファイルなど)が含まれます。さらに、物理ファイルにはメンバーが含まれる場合があります。すべてのテキスト・ファイル(Cプログラムのソース・コード・ファイル)は物理ファイルのメンバーとして保存されます。

実行可能ファイルはHFSにのみ常駐可能ですが、シンボリック・リンクをIFSからHFSにaddlnkコマンドを介して作成できます。

ファイル名

HFSのファイル名は10文字以下に制限されており、大/小文字の区別がありません。

IFS

IFSはディレクトリ指向のファイル・システムで、PCのファイル処理をサポートするように設計されています。IFS(特に/QOpenSys)は、UNIXファイル・システムに非常に類似しています。

実行可能ファイルはHFSにのみ常駐可能ですが、シンボリック・リンクをIFSからHFSにaddlnkコマンドを介して作成できます。

ファイル名

1つの例外(/QOpenSys)を除き、IFSのファイル名には大/小文字の区別があります。

HFSおよびIFSファイルのコマンド

HFSおよびIFSファイルには異なるコマンドを使用する必要があります。

標準IOおよび標準エラーのリダイレクション

ILE CプログラムをHFSファイル・システムで使用する際、標準入力、標準出力および標準エラー(それぞれstdinstdout、およびstderrファイル)をovrdbfコマンドを使用してリダイレクトできます。詳細は、CLリファレンス・マニュアルを参照してください。

標準IOおよび標準エラー・メッセージをIFSファイルから、またはIFSファイルにリダイレクトする単純な方法はありません。

回避策

サンプル

たとえば、progというILE Cプログラムのstdout/home/dougd/outというIFSファイルにリダイレクトするには、リスト3-1に示すテキストを入力します。

リスト3-1 リダイレクションの例
ovrdbf file(stdout) tofile (tmplib/tmpfile) +
mbr (stdout)
call prog
cpytostmf frommbr +
('/qsys.lib/tmplib.lib/tmpfile.file/stdout.mbr') +
tostmf ('/home/dougd/out') stmfopt (*replace)

開発環境

makelex、およびyaccユーティリティはIBM i 6.1では使用できません。ネイティブ文字セットはASCIIではなくEBCDICです。

2つのOracle Tuxedoのコマンド、buildclientおよびbuildserverは、10文字以下の制限に準拠するよう、それぞれbuildcltおよびbuildsrvrに名前が変更されました。

buildcltおよびbuildsrvrコマンドは、モジュール・ファイル(*MODULE)、サービス・プログラム・ファイル(*SRVPGM)、バインディング・ディレクトリ(*BNDDIR)のみの入力を受け入れ、プログラム・ファイル(*PGM)の出力を生成します。ILE Cモジュールはcrtcmodによって生成する必要があります。同様に、ILE COBOLモジュールはcrtcblmodによって生成する必要があります。

次のコマンドラインの例では、appsというライブラリ内のtuxsrcというファイルのメンバーcxにCソース・ファイルをコンパイルする方法を示します。オブジェクト・モジュールはappsというライブラリ内のcxというファイルに作成されます。

crtcmod module(apps/cx) srcfile(apps/tuxsrc) srcmbr(cx) +
sysifcopt(*ifsio) dbgview(*all) define('DEF=1')

ここでは、特殊システム・インタフェース・オプションsysifcopt(*ifsio)が指定されています。このオプションを使用することにより、Cランタイム・ライブラリがIFSファイルにアクセス可能になります。Oracle Tuxedoシステムはこのオプションを使用してコンパイルされているため、互換性を確保するためにこのオプションを使用することをお薦めします。

さらにdbgview(*all)によってデバッグがオンに設定されており、DEFについて定義されたプリプロセッサが1に設定されています。これはccコマンドラインで-DDEF=1 -gを指定する(UNIXプラットフォームの場合)のと同等です。

現在は、buildcltまたはbuildsrvrコマンドラインでCソース・ファイルを指定することはできません。

また、buildcltおよびbuildsrvrコマンドの-fおよび-lオプションは、UNIXシステムにおける同等のコマンド(buildclientおよびbuildserver)の同じオプションとはわずかに異なる意味を持ちます。

UNIXプラットフォームでは、-f (first)オプションによってccコマンドに渡すアイテムのリストを指定し、Oracle Tuxedoライブラリがリンクされる前に、これらのアイテムに対してccを実行して生成されるオブジェクトがリンクされるように指定できます。

-l (last)オプションによってccコマンドに渡すアイテムのリストを指定し、Oracle Tuxedoライブラリがリンクされた後に、これらのアイテムに対してccを実行して生成されるオブジェクトがリンクされるように指定できます。

IBM i 6.1プラットフォームでは、-fオプションではオブジェクト・モジュール(タイプ*MODULEのファイル)のみを使用でき、-lオプションではサービス・プログラム(タイプ*SVRPGMのファイル)のみを使用できます。

-Bオプションを使用するとバインディング・ディレクトリ(*BNDDIR)を指定できます。

buildcltサンプル

次にコマンドラインの例を示します。

call buildclt ('-fapps/cx' '-fapps/cy' '-oapps/client')

このコマンドにより、2つのタスクが実行されます。

buildsrvrサンプル

次にコマンドラインの例を示します。

call buildsrvr ('-fapps/sx' '-fapps/sy' '-oapps/server' '-sSVC')

このコマンドにより、2つのタスクが実行されます。

buildsrvr-kオプションが使用されると、サーバー・メイン・コードがqtempライブラリ内のtuxsrcファイルにあるメンバーBSpidに生成され、pidの値はbuildsrvrプロセスのプロセスIDになります。qtempライブラリは各ジョブの完了時に削除されるため、保存したい場合はサインオフする前に永続的なディレクトリにコピーを作成する必要があります。

mkfldhdrおよびviewcのいずれも、ヘッダー・ファイルをIFSで、通常は現行ディレクトリに生成します。Cコンパイラが検出できるようにするために、これらの.hファイルをHFS hファイルにコピーする必要があります。

mkfldhdr/ mkfldhdr32 -Hオプションにより、ヘッダー・ファイルがHFSで作成されます。

viewcも、バイナリ出力ファイルを.VV(.Vではなく)接尾辞を付加して生成します。

tmconfig

IBM i 6.1では、tmconfigコマンドの有効なEDITOR環境変数値は"STRSEU"および"EDTF"です。240文字以上の行を編集する必要がある場合はEDTFを使用してください。

epifreg

epifregコマンドの-fオプションでは、ライブラリ名およびサービス・プログラム名は、次の例のように、大文字を使用する必要があります。

call epifreg ('-r' '-p qa/fanatz1' '-i engine/security/authorization' '-o SYSTEM' '-v 1.0' '-f AAA101/FANATZ1' '-e qa_atz_entry').

viewc、viewc32

IBM i 6.1とUNIXとの間で異なる点があります。-Cオプションが指定されている場合、VIEWファイルで定義されている各VIEWに対して1つのCOBOLコピー・ファイルが作成されます。これらのコピー・ファイルは、-dオプションで別のディレクトリが指定されている場合を除き、UNIXのように現行ディレクトリではなく、ルート・ディレクトリ(/)に作成されます。

Xerces-C++ Parser

10文字の制限があるため、Xerces-C++ Parserのすべてのインクルード・ファイルはIFSのみに存在します。このため、コンパイル前にこれらのヘッダー・ファイルを含むソース・コードをIFSにコピーし、INCLUDE環境変数を$TUXDIR/includeに設定する必要があります。Xerces-C++を使用したプログラミングの基礎については、Xerces-C++バージョン2.8.0プログラミング・ガイドを参照してください。

EBCDIC文字を使用している場合のXMLエンコード

XMLバッファがEBCDIC文字としてエンコードされている場合、encoding属性を"EBCDIC-CP-US"に設定する必要があります。

IBM i 6.1のコマンド名

10文字の制限があるため、一部の他のTuxedoコマンドはIBM i 6.1で変更されています。

表3-1 IBM i 6.1のコマンド名
UNIXの場合
IBM i 6.1の場合
「tmloadrepos」
tmldrep
tmunloadrepos
tmunldrep
TMS_rac_refresh
TMS_racrf
snmp_integrator
snmpintgrt
snmp_version
snmp_ver
snmpgetnext
snmpgetn
reinit_agent
rinitagent

 


実行時環境

Oracle Tuxedoシステムには、環境を操作するためのツール・セットが付属しています: getenvputenvsetenvおよびenvがあります。

表3-2 ランタイム・ツールのコマンド構文
構文
呼出し
getenv var
指定した環境変数(var)の値を表示します。
putenv 'var=value'
指定した環境変数(var)を指定した値(value)に設定します。
setenv file
putenvを指定したファイル(file)のすべての行で呼び出します。
env
環境内のすべての変数の値を表示します。

IBM i 6.1では1つのコマンドwrkenvvarが提供されており、これはgetenvputenvsetenv、およびenvによるものと類似した機能を備えています。ただし、wrkenvvarコマンドはいくつかの点においてOracle Tuxedoのコマンドとは異なります。まず、Oracle Tuxedoシステムに付属のツールと異なり、wrkenvvarは$接頭辞が付加されている変数名の展開を処理できません(シェル変数展開と同様)。

さらに、hostnameおよびidユーティリティはOracle Tuxedoシステムのみに付属しています。

すべてのOracle Tuxedo実行可能ファイルとヘッダー・ファイルは、HFSライブラリにパッケージ化されています(インストール時に「tuxlib」を参照してください)。その他のデータ・ファイル( udataobj/*およびlocale/C/*など)は、IFSの$TUXDIRに格納されています。$TUXDIR/binには、HFS実行可能ファイルへのシンボリック・リンクが含まれます。$APPDIRもIFS内に存在するはずです。Oracle Tuxedoコマンドを呼び出す前に、HFSライブラリをライブラリ・リストに追加する必要があります。

サンプル・アプリケーション

tuxdir/QOpenSys/tuxedoにインストールされており、tuxlibがTuxedoとしてインストールされており、APPDIR/home/apps/simpappに設定されていると仮定します。

まず、simpclおよびsimpservプログラムの構築から開始します(ステップ1 - 9)。

  1. appsというHFSライブラリを作成します。
  2. crtlib apps

  3. tuxsrcという物理ソース・ファイルを作成します。
  4. crtsrcpf apps/tuxsrc rcdlen (120)

  5. simpcl.c/qopensys/tuxedo/samples/atmi/simpappからtuxsrc simpclメンバーにコピーします。
  6. cpyfrmstmf fromstmf('/qopensys/tuxedo/samples/atmi/simpapp/simpcl.c') +
    tombr('/qsys.lib/apps.lib/tuxsrc.file/simpcl.mbr') +
    mbropt(*replace)

  7. ILE Cコンパイラを実行してクライアント・オブジェクト・モジュールを生成します。
  8. crtcmod module(apps/simpcl) srcfile(apps/tuxsrc) +
    srcmbr(simpcl) sysifcopt(*ifsio)

  9. buildcltを実行してクライアント・プログラムを生成します。
  10. call buildclt ('-fapps/simpcl' '-oapps/simpcl')

  11. simpserv.cを/qopensys/tuxedo/apps/simpappからtuxsrcのメンバーsimpservにコピーします。
  12. cpyfrmstmf fromstmf('/qopensys/tuxedo/samples/atmi/simpapp/simpserv.c') +
    tombr('/qsys.lib/apps.lib/tuxsrc.file/simpserv.mbr') +
    mbropt(*replace)
  13. ILE Cコンパイラを実行してサーバー・オブジェクト・モジュールを生成します。
  14. crtcmod module(apps/simpserv) srcfile(apps/tuxsrc) +
    srcmbr(simpserv) sysifcopt(*ifsio)
  15. buildsrvrコマンドを実行してサーバー・プログラムを生成します。
  16. call buildsrvr ('-sTOUPPER' '-fapps/simpserv' '-oapps/simpserv')
  17. /home/apps/simpapp/simpservからapps/simpservへのシンボリック・リンクを作成します。
  18. addlnk obj('/qsys.lib/apps.lib/simpserv.pgm') +
    newlnk('/home/apps/simpapp/simpserv')
  19. tuxlibをライブラリ・リストに追加します。
  20. addlible tuxedo
  21. 次のように、必要な環境変数を設定します。
  22. call putenv 'LANG=C’
    call putenv 'TUXDIR=/QOpenSys/tuxedo'
    call putenv 'APPDIR=/home/apps/simpapp'
    call putenv 'PATH=/QOpenSys/tuxedo/bin:/home/apps/simpapp'
  23. UBBCONFIG構成ファイルUBBCONFIGからTUXCONFIG ファイルを作成します。
  24. call putenv 'TUXCONFIG=$APPDIR/tuxconfig'
    call tmloadcf ('-y' 'UBB')
  25. wrklnkを実行してファイルtuxconfig/home/apps/simpappに作成されたことを検証します。
  26. アプリケーションを起動します。
  27. call tmboot '-y'
  28. 次のようなコマンドを入力して、クライアントを実行します。
  29. call apps/simpcl 'abc'
  30. IBM i 6.1でEDTFを使用してuserlogファイル(IFSで$APPDIRに作成されています)を確認します。

アプリケーションの停止

アプリケーションを停止するには、次のコマンドを入力します。

call tmshutdown '-y'

IPCリソース

IBMには、IPCツールのセットがPTFとして付属しています。これらのツールは、UNIXシステムでipcsおよびipcrmコマンドによって使用できるものと同じ機能を提供します。ただし、いくつか異なる点があり、IBMのツールは異なる名前を持ち、出力を異なった方法で生成します。

すべてのアプリケーションが消費するIPCリソースを表示するには、次のコマンドを入力します。

call qp0zipcs

qp0zipcsの出力は*QPRINTで生成されるため、wrksplfコマンドを使用してスプール・ファイルとして表示できます。

特定のIPCリソース、例えばメッセージ・キューID (qid)を削除するには、次のコマンドを入力します。

call qp0zipcr ('-qqid')

qp0zipcrの実行時にエラーが発生すると、メッセージがjoblogに生成されます。表示するには、dspjoblogコマンドを使用します。

構成に関する注意事項

/Q

qmadmin qcreateコマンドラインで指定されているthresholdコマンドのパラメータ(サーバーのRCMDなど)は、HFSの実行可能プログラムへのシンボリック・リンクを参照する必要があります。リンクは$PATHに含まれている必要があり、通常は$APPDIRにあります。

この場合、UNIXのシェル・スクリプトは使用できません。

管理コンソール

Oracle Tuxedo 11gリリース1(11.1.1.2.0)を使用すると、任意のWebブラウザ(NetscapeまたはInternet Explorerなど)から管理用のWebベースGUIを使用してOracle Tuxedoアプリケーションを管理できます。この項では、Oracle Tuxedo管理コンソールをIBM i 6.1プラットフォームで実行するヒントを示します。

$TUXDIR/udataobj/webgui/webguitop.html$TUXDIR/udataobj/tuxwsvr.ini、および$TUXDIR/udataobj/webgui.iniの3つのファイルを変更する必要があります。例:

tuxwsvrおよびwlistenの2つのプログラムは、バックグラウンドで実行する必要があります。これには、tlistenなどのsbmjobを使用します。例:

    addlible tuxlib
    addenvvar envvar('TUXDIR') value('/QOpenSys/tuxedo')
    SBMJOB CMD(CALL PGM(tuxwsvr) PARM('-l' '//hostname:8899' '-i'     'TUXDIR/udataobj/tuxwsvr.ini')) JOB(tuxwsvr) CPYENVVAR(*YES)

また、現在の実装では、すべてのユーザーCGIプログラムについて、常駐先のHFSライブラリをライブラリ・リストに追加する必要があります。

wlistenを使用するバッチ・ジョブの設定手順は、tuxwsvrまたはtlistenのバッチ・ジョブの設定手順と同様です。

IBM i 6.1でOracle Tuxedoの管理用に管理コンソールを起動するには、次のURLを入力します。

http://machine_name:port/webguitop.html(machine_name:portは、tuxwsvrが稼働しているIBM i 6.1マシンとポートの組合せです)。

Oracle Tuxedo管理コンソールの使用準備の詳細は、Oracle Tuxedoインストレーション・ガイドのOracle Tuxedo管理コンソールの起動に関する項を参照してください。

Joltリレー

Joltリレー(JRLY)とJoltリレー・アダプタ(JRAD)間の動作を、通常インターネット・リレーと呼びます。Joltリレーは、JoltクライアントからJSLやJSHにメッセージをルーティングします。これにより、JSHとOracle Tuxedoを、(安全性に問題があると見なされている)Webサーバーと同じマシンで実行する必要がなくなります。

プログラムJRLYは、バックグラウンドで実行する必要があります。これには、tlistenまたはtuxwsvrなどのsbmjobまたはsbmdbjobを使用します。

Joltリレーの詳細は、Oracle Joltを参照してください。

TxRPC

デフォルトで、tidlコンパイラはCプリプロセッサを実行しません。したがって、入力ファイルに#define文またはその他のプリプロセッサの構造体が含まれている場合、-cpp_cmdオプションを指定する必要があります。

call tidl ('-cpp_cmd' 'crtcmod' . . . )

デフォルトで、tidlコマンドはサーバーおよびクライアントのスタブ・ファイルも現行のIFSディレクトリに生成します。スタブ・ファイルの名前はx_cstub.cおよびx_sstub.cです。また、次の例のように、-outオプションでディレクトリ/qsys.lib内のライブラリを指定してスタブ・ファイルをHFSに生成することも可能です。

call tidl ('-out' '/qsys.lib/tuxedo.lib' . . . )

この場合、スタブ・ファイルは物理ファイルidl内で、それぞれクライアントおよびサーバー・スタブについてx_csおよびx_ssという名前のメンバーに生成されます。また、tidlコマンドにより、ヘッダー・ファイルがIFSの現行作業ディレクトリに生成されます。たとえば、idlコンパイラが次のように入力ファイルx.idlに対して実行されたとします。

call tidl ('-cpp_cmd' 'crtcmod' '-keep' 'c_source' 'x.idl')

これにより、tidlによって次の3つのファイルがIFSの現行作業ディレクトリに生成されます。

さらに、tidlコンパイラにより、ヘッダー・ファイルが、qtempライブラリ内のファイルhに属するメンバーxにコピーされます。

-keepオプションが指定されていない場合、Cコンパイラがスタブ・ファイルに対して起動され、オブジェクト・モジュールx_csおよびx_ssがライブラリqtempに生成されます。(qtempはデフォルトの出力ライブラリですが、前述の通り、-outオプションによってオーバーライドが可能です。)

/COBOL

Oracle Tuxedoシステムは、ILE COBOL言語で作成されたクライアントおよびサーバーをサポートしています。MicroFocus COBOLとILE COBOLの主な違いを次に示します。

ILE COBOLのコマンドライン・インタフェースでは、ACCEPT文ではなく連絡節を使用する必要があります。

出力をファイルにリダイレクトする方法が異なります。詳細は、COBOLプログラマ・ガイドおよびCOBOLリファレンス・マニュアルを参照してください。Oracle Tuxedoシステムに付属の2つのアプリケーション(CSIMPAPPおよびSTOCKAPP)でも、IBM i 6.1プラットフォームで一部のタスクが実行される方法が示されています。

COBOLプログラムを作成する前に環境変数TM_COB_STATICYESに設定している場合のみ、COBOLルーチンに関してOracle TuxedoのTMDISPATCH9()TMDISPATCH16()でオーバーライドできます。


  先頭に戻る       前  次