▼ メニュー ▼

- Q&A集です。
## 古い情報のため最新の情報と相違があるかも知れません ##
Last updated
2002/08/13(火) 10:50
- OS系 -
Q: SAVLIBで保管したテープから任意のファイル(またはオブジェクト)のみ復元するには?
登録日: 1999/07/13 修正日: ----/--/--

A: 下記を参照。

復元先ライブラリーを作成し、その中に復元したいファイルをCRTDUPOBJで複製しておき次のコマンドを実行する。
RSTLIB SAVLIB(XXXXXXXXXX) DEV(TAPxx) OPTION(*OLD) MBROPT(*ALL) ALWOBJDIF(*ALL) RSTLIB(YYYYYYYYYY)

XXXXXXXXXX : 保管されたライブラリー
YYYYYYYYYY : 復元先ライブラリー
情報提供 - たま



上記のことは下記のコマンドでも対応できるでしょう。
RSTOBJ OBJ(FILENAME) SAVLIB(XXXXXXXXXX) DEV(TAPxx) OBJTYPE(*FILE) MBROPT(*NEW) RSTLIB(YYYYYYYYYY)

XXXXXXXXXX : 保管されたライブラリー
YYYYYYYYYY : 復元先ライブラリー


Q: SNDPTFORDでPTFが取れない。メッセージにCPF4202がでる。回復方法は?
登録日: 1999/05/25 修正日: ----/--/--

A: ネットワーク属性または装置記述のモードを修正する。

QESPAPの装置記述のパラメータのモードは、*NETATR(デフォルト)になっているのでネットワーク属性(DSPNETA)のパラメータ省略時のモードを参照してしまうようです。

回復方法1
・ネットワーク属性(DSPNETA)のパラメータ省略時のモードをBLANKに戻す。

回復方法2
・QESPAPの装置記述のパラメータのモード、*NETATR(デフォルト)をBLANKにする(CHGDEVAPPC)


Q: QSECOFRが使用できない、またはパスワードを忘れた。回復方法は?
登録日: 1999/02/23 修正日: ----/--/--

A: 次の方法を参照。

1. DSTツールによる回復
   手動IPLでIPLかDSTを選択。
   (ただし、DSTツールのパスワードがわからないと駄目)

2. 特殊権限に*SECADMを持つユーザーがいればそのユーザーでQSECOFRを回復。
   CHGUSRPRF USRPRF(QSECOFR) PASSWORD(PASSWORD)

3. スクラッチインストール

補)

RISCマシンならQSECOFRが*DISABLEDになっていてもコンソールからならログインできます。CISCマシンは駄目。


Q: スプールファイルを保管するには?
登録日: 1999/02/23 修正日: ----/--/--

A: CPYSPLFを使用しましょう。

例)
CRTPF FILE(MyLIB/MyPF) RCDLEN(200) IGCDTA(*YES)
CPYSPLF FILE(MySPL) TOFILE(MyLIB/MyPF) CTLCHAR(*FCFC)
これで物理ファイルMyPFに保管されます。

補)
上記MyPFからスプールファイルに戻す場合は、プリントファイルの制御文字が*FCFCになっているものを使用します。(OVRPRTFで一時変更してもよい)

OVRPRTF FILE(QSYSPRT) CTLCHAR(*FCFC)
CPYF FROMFILE(MyLIB/MyPF) TOFILE(QSYSPRT)
これでスプールが復元されます。


Q: DFUでのコミットメント制御は可能ですか?
登録日: 1999/01/14 修正日: ----/--/--

A: できません。

コミットメント制御下(STRCMTCTLを実行した後)で、UPDDTAを実行してROLLBACKを実行してもデータは元に戻りませんでした。(DFUにトランザクションの概念が無いようですね)

もし可能なら私が教えて欲しい^^;


Q: 物理ファイル容量、論理ファイル容量の計算方法は?
登録日: 1999/01/12 修正日: ----/--/--

A: 次の計算式を参照して下さい。

1. 物理ファイルの計算式
(N + 1) * (L + 1) + M * 5.0KB + 1KB
N : レコード数
M : 物理ファイルの中のメンバー数
L : レコード長

※物理ファイルのサイズは、CRTPF, CRTSRCPFコマンドのSIZE, ALLOCATEの各パラメータにより異なります。ALLOCATE(*YES)を指定した場合には、レコードの数の代わりに、SIZEキーワードで初期割振り及び増分サイズを使用しなければなりません。

2. 論理ファイル の計算式(アクセスパスは除く)
M * 2.5KB + 1KB
M : 論理ファイル中のメンバー数

3. キー順アクセスパスの場合(メンバー1つあたり)
K * (L + 8) * 0.8 * 1.85 * 4094
K : キーの数
L : キーの長さ
0.8 : キー圧縮の概算値(*1)
1.85 : 索引オーバーヘッド, 挿入キーの概算値(*1)
(*1)これら概算値は使用しているファイルにより大きく異なる場合があり、キー順アクセスパスは使用しているレコードの中のデータにより大きく異なりますので注意して下さい。

補)
詳しくはマニュアル『プログラミング データベースの手引きA-1』(N:SC21-9659-2)を参照して下さい。


Q: IFS上にあるファイルの保管方法は?
登録日: 1998/12/18 修正日: ----/--/--

A: SAVコマンドを使用して下さい。

例)
SAV DEV('/QSYS.LIB/TAP01.DEVD') OBJ(('/home/test/*'))
などとして下さい。

TAP01.DEVDがポイント。


Q: あるファイルが追加、更新または削除された場合に即時に知る方法は?
登録日: 1998/11/13 修正日: ----/--/--

A: トリガープログラムを使用する。

例)
ADDPFTRG FILE(MyLIB/PFFILE) TRGTIME(*AFTER) TRGEVENT(*UPDATE) PGM(MyLIB/MyPGM)
これはファイルに追加、変更または削除の事象が発生した場合に実行されるプログラムをファイルに付加するものです。(詳しくはマニュアルを参照して下さい。)
プログラムで何をするかはもちろん任意です。


Q: ヘルプを最初から全画面表示にするには?
登録日: 1998/11/05 修正日: ----/--/--

A: ユーザープロフィールを変更して下さい。

例)
CHGUSRPRF USRPRF(TESTUSR) USROPT(*HLPFULL)のようにユーザーオプションに*HLPFULLを指定します。


Q: ある物理ファイルにぶらさがった論理ファイルを調べるには?
登録日: 1998/10/13 修正日: ----/--/--

A: DSPDBRで調べられます。

例)
DSPDBR FILE(MyLIB/PFFILE)


Q: ある論理ファイルのアクセス先の物理ファイル(親)を調べるには?
登録日: 1998/10/13 修正日: ----/--/--

A: DSPFDで調べられます。

例)
DSPFD FILE(MyLIB/LFFILE) TYPE(*ACCPTH)


Q: あるオブジェクトのソースファイルは何かを調べるには?
登録日: 1998/10/06 修正日: ----/--/--

A: DSPOBJDまたはDSPPGMで調べられます。

ILEプログラム以外は
DSPOBJD OBJ(MyOBJ) OBJTYPE(TYPE) DETAIL(*SERVICE)
またはDSPPGM PGM(MyPGM)で調べられます。

ILEプログラムの場合は
DSPPGM PGM(MyPGM)
またはDSPPGM PGM(MyPGM) DETAIL(*MODULE)


Q: プロダクトがどのライブラリーに属しているか表示可能ですか?
登録日: 1998/09/30 修正日: ----/--/--

A: 可能です。

DSPSFWRSCコマンドを実行して、F11を押せばライブラリーが表示されます。

例)
「AS/400 TCP/IP 通信ユーティリティー /400」のライブラリーは?
DSPSFWRSCを実行して上記のプロダクトを探します。見つけたらF11を押すとそこにライブラリーが表示されます。


Q: STRQRYで作成したQRY定義にパラメータ(変数)を与えるには?
登録日: 1998/09/14 修正日: 2002/08/13

A: STRQRYで作成したQRY定義には直接、変数を与えるこはできません。
A: 下記の方法で可能です。

STRQRYでQRY定義を作成する時に「レコードの選択」画面で値を「:PARM」などとします。PARMと言う名前は任意。

「:PARM」を入れて実行キーを押すと「従属値の修飾子の指定」画面になります。
「従属値の修飾子の指定」の画面で「修飾子タイプ」を「1」にします。「QUERYまたはファイル」を任意の値にします。

その後はSTRQMQRY QMQRY(作成したQRY名) ALWQRYDFN(*YES) SETVAR((PARM '''00001'''))で実行します。
これでCLなどのプログラムでQRYにパラメータを与えることが可能です。
上記の内容は掲示板の情報を元に作成しています。

別の方法)
1. RTVQMQRY, RTVQMFORM - このコマンドでQRY定義とQRY書式をソースに展開します。
RTVQMQRY QMQRY(MyLIB/MyQRY) SRCFILE(MyLIB/SRCFILE) SRCMBR(*QMQRY) ALWQRYDFN(*YES)
RTVQMFORM QMFORM(MyLIB/MyFORM) SRCFILE(MyLIB/SRCFILE) SRCMBR(*QMFORM) ALWQRYDFN(*YES)

- 展開したQRY定義のソース -
H QM4 05 Q 01 E V W E R 01 03 98/09/14 12:35
V 1001 050
V 5001 004 *HEX
SELECT
  ALL       CODE, NAME, ADDR, TEL, POST
  FROM      TESTLIB/TESTF T01
  WHERE     CODE >= 'A1111'
  ORDER BY  CODE ASC

このソースを変更して変数を与えたいフィールドに対して次のようにします
H QM4 05 Q 01 E V W E R 01 03 98/09/14 12:35
V 1001 050
V 5001 004 *HEX
SELECT
  ALL       CODE, NAME, ADDR, TEL, POST
  FROM      TESTLIB/TESTF T01
  WHERE     CODE >= &CODE <--ここ
  ORDER BY  CODE ASC

2. ソースをコンパイルします。
CRTQMQRY QMQRY(MyLIB/MyQRY) SRCFILE(MyLIB/SRCFILE) SRCMBR(*QMQRY)
CRTQMFORM QMFORM(MyLIB/MyFORM) SRCFILE(MyLIB/SRCFILE) SRCMBR(*QMFORM)

コンパイルするとタイプが*QMQRY, 属性がSQLのオブジェクトとタイプが*QMFORMのオブジェクトができ上がります。
(WRKOBJやSTRQM,WRKQMQRY等で確認して下さい)

3. そして実行。
STRQMQRY QMQRY(MyLIB/MyQRY) OUTPUT(*PRINT) QMFORM(MyLIB/MyFORM) SETVAR((CODE '''12345'''))
または、
STRQMQRY QMQRY(MyLIB/MyQRY) OUTPUT(*PRINT) QMFORM(MyLIB/MyFORM) SETVAR((CODE &PARM_VAR))
の様に実行します。
OUTPUTパラメータを*, *PRINT, *OUTFILEにより使い分ければ画面表示、印刷、ファイルを出力先を選択できます。


要はSQL定義を作成してそれにパラメータ(変数)を与えるという他のプラットフォームでもお馴染みの 方法です。

補)
STRQM(DB2 QUERY管理機能AS/400用)はSQL開発キットAS/400用(xxxxST1)に含まれています。(xxxxはバージョンにより異なります)

presented by OnBeDo
HOMEに戻る