![]() ![]() ![]() ![]() ![]() ![]() |
IBM i 6.1システムのユーザー・インタフェースは完全にメニューに依存します。インタフェースではファンクション・キー[F1] - [F24]を多用します。
メニューから実行されるほとんどすべてのアクションには、対応するコマンドラインが存在します。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
コマンドにより、サブミットされたすべてのバッチ・ジョブが表示されます。
この項では、IBM i 6.1プラットフォームで重要な2つのファイル・システム、HFSおよびIFSについて説明します。
HFSは、従来のフラットなファイル・システムです。最上位レベルにはライブラリが含まれます。各ライブラリには、ファイル(モジュール・ファイル、プログラム・ファイル、および物理ファイルなど)が含まれます。さらに、物理ファイルにはメンバーが含まれる場合があります。すべてのテキスト・ファイル(Cプログラムのソース・コード・ファイル)は物理ファイルのメンバーとして保存されます。
実行可能ファイルはHFSにのみ常駐可能ですが、シンボリック・リンクをIFSからHFSにaddlnk
コマンドを介して作成できます。
HFSのファイル名は10文字以下に制限されており、大/小文字の区別がありません。
IFSはディレクトリ指向のファイル・システムで、PCのファイル処理をサポートするように設計されています。IFS(特に/QOpenSys)は、UNIXファイル・システムに非常に類似しています。
実行可能ファイルはHFSにのみ常駐可能ですが、シンボリック・リンクをIFSからHFSにaddlnk
コマンドを介して作成できます。
1つの例外(/QOpenSys)を除き、IFSのファイル名には大/小文字の区別があります。
HFSおよびIFSファイルには異なるコマンドを使用する必要があります。
wrklib
、wrkf
、およびwrkmbrpdm
コマンドはHFSオブジェクトに対してのみ使用できます。cd
、mkdir
、dspcurdir
、およびwrklnk
コマンドはIFSファイルおよびHFSファイルの両方で使用できますが、アクセスする対象がHFSまたはIFSオブジェクトのいずれであるかにより、異なる構文が必要です。cpytostmf
およびcpyfrmstmf
コマンドを使用して、テキスト・ファイルを一方のファイル・システムから別のファイル・システムにコピーできます。たとえば、次のコマンドを使用すると、/QOpenSys/tuxedo/tmp/xyz
というIFSファイルを(appsというライブラリにある)xyz
というメンバー内のtmp
というHFS物理ファイルにコピーします。cpyfrmstmf fromstmf('/QOpenSys/tuxedo/tmp/xyz') +
tombr('/qsys.lib/tmp.file/xyz.mbr') +
mbropt(*replace)
ILE CプログラムをHFSファイル・システムで使用する際、標準入力、標準出力および標準エラー(それぞれstdin
、stdout
、およびstderr
ファイル)をovrdbf
コマンドを使用してリダイレクトできます。詳細は、CLリファレンス・マニュアルを参照してください。
標準IOおよび標準エラー・メッセージをIFSファイルから、またはIFSファイルにリダイレクトする単純な方法はありません。
たとえば、prog
というILE Cプログラムのstdout
を/home/dougd/out
というIFSファイルにリダイレクトするには、リスト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)
make
、lex
、および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)を指定できます。
call buildclt ('-fapps/cx' '-fapps/cy' '-oapps/client')
call buildsrvr ('-fapps/sx' '-fapps/sy' '-oapps/server' '-sSVC')
buildsrvr
の-k
オプションが使用されると、サーバー・メイン・コードがqtemp
ライブラリ内のtuxsrc
ファイルにあるメンバーBSpid
に生成され、pidの値はbuildsrvr
プロセスのプロセスIDになります。qtemp
ライブラリは各ジョブの完了時に削除されるため、保存したい場合はサインオフする前に永続的なディレクトリにコピーを作成する必要があります。
mkfldhdr
およびviewc
のいずれも、ヘッダー・ファイルをIFSで、通常は現行ディレクトリに生成します。Cコンパイラが検出できるようにするために、これらの.h
ファイルをHFS hファイルにコピーする必要があります。
mkfldhdr/ mkfldhdr32 -H
オプションにより、ヘッダー・ファイルがHFSで作成されます。
viewc
も、バイナリ出力ファイルを.VV
(.V
ではなく)接尾辞を付加して生成します。
IBM i 6.1では、tmconfig
コマンドの有効なEDITOR環境変数値は"STRSEU
"および"EDTF
"です。240文字以上の行を編集する必要がある場合はEDTF
を使用してください。
epifreg
コマンドの-f
オプションでは、ライブラリ名およびサービス・プログラム名は、次の例のように、大文字を使用する必要があります。
call epifreg ('-r' '-p qa/fanatz1' '-i engine/security/authorization' '-o SYSTEM' '-v 1.0' '-f AAA101/FANATZ1' '-e qa_atz_entry')
.
IBM i 6.1とUNIXとの間で異なる点があります。-C
オプションが指定されている場合、VIEWファイルで定義されている各VIEWに対して1つのCOBOLコピー・ファイルが作成されます。これらのコピー・ファイルは、-dオプションで別のディレクトリが指定されている場合を除き、UNIXのように現行ディレクトリではなく、ルート・ディレクトリ(/)に作成されます。
10文字の制限があるため、Xerces-C++ Parserのすべてのインクルード・ファイルはIFSのみに存在します。このため、コンパイル前にこれらのヘッダー・ファイルを含むソース・コードをIFSにコピーし、INCLUDE
環境変数を$TUXDIR/include
に設定する必要があります。Xerces-C++を使用したプログラミングの基礎については、Xerces-C++バージョン2.8.0プログラミング・ガイドを参照してください。
XMLバッファがEBCDIC文字としてエンコードされている場合、encoding属性を"EBCDIC-CP-US"に設定する必要があります。
10文字の制限があるため、一部の他のTuxedoコマンドはIBM i 6.1で変更されています。
Oracle Tuxedoシステムには、環境を操作するためのツール・セットが付属しています: getenv
、putenv
、setenv
およびenv
があります。
IBM i 6.1では1つのコマンドwrkenvvar
が提供されており、これはgetenv
、putenv
、setenv
、およびenv
によるものと類似した機能を備えています。ただし、wrkenvvar
コマンドはいくつかの点においてOracle Tuxedoのコマンドとは異なります。まず、Oracle Tuxedoシステムに付属のツールと異なり、wrkenvvar
は$接頭辞が付加されている変数名の展開を処理できません(シェル変数展開と同様)。
さらに、hostname
およびid
ユーティリティはOracle Tuxedoシステムのみに付属しています。
hostname
コマンドにより、IBM i 6.1のネットワーク・ノードの名前が出力されます。UBBCONFIG構成ファイルで使用されているマシン名はhostname
によって返される名前と一致する必要があります。 すべての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)。
apps
というHFSライブラリを作成します。tuxsrc
という物理ソース・ファイルを作成します。 crtsrcpf apps/tuxsrc rcdlen (120)
simpcl.c
を/qopensys/tuxedo/samples/atmi/simpapp
からtuxsrc simpcl
メンバーにコピーします。 cpyfrmstmf fromstmf('/qopensys/tuxedo/samples/atmi/simpapp/simpcl.c') +
tombr('/qsys.lib/apps.lib/tuxsrc.file/simpcl.mbr') +
mbropt(*replace)
crtcmod module(apps/simpcl) srcfile(apps/tuxsrc) +
srcmbr(simpcl) sysifcopt(*ifsio)
buildclt
を実行してクライアント・プログラムを生成します。 call buildclt ('-fapps/simpcl' '-oapps/simpcl')
/qopensys/tuxedo/apps/simpapp
からtuxsrc
のメンバーsimpserv
にコピーします。cpyfrmstmf fromstmf('/qopensys/tuxedo/samples/atmi/simpapp/simpserv.c') +
tombr('/qsys.lib/apps.lib/tuxsrc.file/simpserv.mbr') +
mbropt(*replace)
crtcmod module(apps/simpserv) srcfile(apps/tuxsrc) +
srcmbr(simpserv) sysifcopt(*ifsio)
buildsrvr
コマンドを実行してサーバー・プログラムを生成します。call buildsrvr ('-sTOUPPER' '-fapps/simpserv' '-oapps/simpserv')
/home/apps/simpapp/simpserv
からapps/simpserv
へのシンボリック・リンクを作成します。addlnk obj('/qsys.lib/apps.lib/simpserv.pgm') +
newlnk('/home/apps/simpapp/simpserv')
tuxlib
をライブラリ・リストに追加します。addlible tuxedo
call putenv 'LANG=C’
call putenv 'TUXDIR=/QOpenSys/tuxedo'
call putenv 'APPDIR=/home/apps/simpapp'
call putenv 'PATH=/QOpenSys/tuxedo/bin:/home/apps/simpapp'
call putenv 'TUXCONFIG=$APPDIR/tuxconfig'
call tmloadcf ('-y' 'UBB')
wrklnk
を実行してファイルtuxconfig
が/home/apps/simpapp
に作成されたことを検証します。call tmboot '-y'
call apps/simpcl 'abc'
$APPDIR
に作成されています)を確認します。call tmshutdown '-y'
IBMには、IPCツールのセットがPTFとして付属しています。これらのツールは、UNIXシステムでipcs
およびipcrm
コマンドによって使用できるものと同じ機能を提供します。ただし、いくつか異なる点があり、IBMのツールは異なる名前を持ち、出力を異なった方法で生成します。
すべてのアプリケーションが消費するIPCリソースを表示するには、次のコマンドを入力します。
call qp0zipcs
qp0zipcsの出力は*QPRINTで生成されるため、wrksplf
コマンドを使用してスプール・ファイルとして表示できます。
特定のIPCリソース、例えばメッセージ・キューID (qid)を削除するには、次のコマンドを入力します。
call qp0zipcr ('-qqid')
qp0zipcrの実行時にエラーが発生すると、メッセージがjoblog
に生成されます。表示するには、dspjoblog
コマンドを使用します。
$APPDIR
が/QOpenSys
内にある場合、サーバー名には大/小文字の区別があります。addlnk
コマンドを使用します。)IFSの名前はHFSでの名前と同じである必要があるため、各IFS名は10文字以下に制限されます。hostname
コマンドによって返される文字列である必要があります。tlisten
コマンドは、バックグラウンドで自ら起動しません。tlisten
を使用するバッチ・ジョブをサブミットするには、次の例のように、sbmjob
コマンドを使用します。 Addenvvar envvar('TUXDIR') value('/QOpenSys/tuxedo')
SBMJOB CMD(CALL PGM(TLISTEN) PARM('-l' '//hostname:8899')) JOB(TLISTEN) CPYENVVAR(*YES).
SCANUNIT*2-1
の値に切り上げられます。tpusr
ファイルはAUTHSVR
で必須です。/QSYS.LIB/EN_US.LOCALE
の場合)、環境変数LANGをCに設定する必要があります。より簡単な方法は、ユーザー・プロファイルでロケールをCに設定することです。 qmadmin qcreate
コマンドラインで指定されているthresholdコマンドのパラメータ(サーバーのRCMDなど)は、HFSの実行可能プログラムへのシンボリック・リンクを参照する必要があります。リンクは$PATHに含まれている必要があり、通常は$APPDIRにあります。
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つのファイルを変更する必要があります。例:
$TUXDIR/udataobj/webgui/webguitop.html
内の"TUXDIRVALUE
"をTUXDIR
の値に置換します。$TUXDIR/udataobj/webgui/webguitop.html
内の"http://HOST/cgi-bin/tuxadm"を/cgi-bin/tuxadm
に置換します。$TUXDIR/udataobj/ tuxwsvr.ini
内の"<TUXDIR>
"をTUXDIR
の値に置換します。$TUXDIR/udataobj/webgui/webgui.ini
内の"<TUXDIR>
"をTUXDIR
の値に置換します。$TUXDIR/udataobj/webgui/webgui.ini
内の"<LOCAL_HOST>
"をホスト名に置換します。 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リレー(JRLY)とJoltリレー・アダプタ(JRAD)間の動作を、通常インターネット・リレーと呼びます。Joltリレーは、JoltクライアントからJSLやJSHにメッセージをルーティングします。これにより、JSHとOracle Tuxedoを、(安全性に問題があると見なされている)Webサーバーと同じマシンで実行する必要がなくなります。
プログラムJRLYは、バックグラウンドで実行する必要があります。これには、tlisten
またはtuxwsvr
などのsbmjob
またはsbmdbjob
を使用します。
Joltリレーの詳細は、Oracle Joltを参照してください。
デフォルトで、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
オプションによってオーバーライドが可能です。)
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_STATIC
をYES
に設定している場合のみ、COBOLルーチンに関してOracle TuxedoのTMDISPATCH9()
をTMDISPATCH16()
でオーバーライドできます。
![]() ![]() ![]() |