◇Q141. 全銀ベーシック手順で、「52-11」のエラーになった考えられる原因はなんでしょうか?
◇A141.
全銀ファイル名をチェックしてみてください。特にサイクル番号は要注意です。
または、モードもチェックしてください。
0:送信、1:受信
◇Q142. 制御サブシステムのQBASEとQCTLの違いは?
◇A142.
制御サブシステムQBASEでは、システム内の全てのジョブがサブシステムQBASE配下で稼動します。
QCTLの場合は、QINTER、QBATCH、QCMN、QUSRWRK、QSERVERの各サブシステムが起動し、ジョブは各サブシステムに分かれて稼動します。
QCTLにした方がジョブのタイプ毎に起動・停止を制御できますので柔軟な運用ができます。
◇Q143. 前回のIPL日時を知りたい
◇A143.
以下のいずれかでわかります。
b.DSPLOG MSGID(CPI0C04)で見る。
c.API QUSRJOBIを使用する。
◇Q144. 印刷ファイルへの出力で入出力エラーになる
◇A144.
印刷ファイルで定義している行数または桁数をオーバーして書き込みを行っている可能性あります。
◇Q145. 同じユーザーIDでサインオンできるセッション数を制限したい
◇A145.
SYSVAL(QLMTDEVSSN)、ユーザープロファイル(LMTDEVSSN)ではセッション数を1にするかどうかの指定ができます。
セッション数を1以外で制限したい場合は残念ながらPGMを作成する必要があります。
サンプルをご紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
PGM PARM(&MAX) DCL VAR(&MAX) TYPE(*DEC) LEN(5 0) DCL VAR(&USRNAME) TYPE(*CHAR) LEN(10) DCL VAR(&JOB) TYPE(*CHAR) LEN(10) DCL VAR(&FORMAT) TYPE(*CHAR) LEN(8) + VALUE('JOBL0100') DCL VAR(&JOBNAME) TYPE(*CHAR) LEN(26) + VALUE('*ALL *ALL ') DCL VAR(&STATUS) TYPE(*CHAR) LEN(10) VALUE(*ACTIVE) DCL VAR(&JOBTYPE) TYPE(*CHAR) LEN(1) VALUE('I') DCL VAR(&ERRCODE) TYPE(*CHAR) LEN(8) + VALUE(X'0000000000000000') DCL VAR(&COUNT) TYPE(*DEC) LEN(5 0) DCL VAR(&USRSPC) TYPE(*CHAR) LEN(20) + VALUE('XTEMPSPACEQTEMP ') DCL VAR(&NUMENTB) TYPE(*CHAR) LEN(4) DCL VAR(&NUMENT) TYPE(*DEC) LEN(8 0) DCL VAR(&GENHDR) TYPE(*CHAR) LEN(140) /********************************************************************/ /* ユーザースペースの作成 */ /********************************************************************/ CALL PGM(QUSCRTUS) PARM(&USRSPC ' ' + X'00000100' ' ' '*ALL ' ' ') MONMSG MSGID(CPF0000) /********************************************************************/ /* ユーザーIDの取得 */ /********************************************************************/ RTVJOBA JOB(&JOB) USER(&USRNAME) /********************************************************************/ /* ユーザーIDのセット */ /********************************************************************/ CHGVAR VAR(%SST(&JOBNAME 11 10)) VALUE(&USRNAME) /********************************************************************/ /* ジョブ情報の取得 */ /********************************************************************/ CALL PGM(QUSLJOB) PARM( + &USRSPC &FORMAT &JOBNAME &STATUS + &ERRCODE &JOBTYPE X'00000000' X'00000000') /********************************************************************/ /* ヘッダー情報の取得 */ /********************************************************************/ CALL PGM(QUSRTVUS) PARM(&USRSPC X'00000001' + X'0000008C' &GENHDR) CHGVAR VAR(&NUMENTB) VALUE(%SST(&GENHDR 133 4)) CHGVAR VAR(&NUMENT) VALUE(%BIN(&NUMENTB)) CHGVAR VAR(&COUNT) VALUE(&NUMENT) /********************************************************************/ /* セッション数をチェック */ /********************************************************************/ CHECK: IF (&NUMENT *LE &MAX) THEN( GOTO CLEANUP) SNDBRKMSG MSG('最大セッション数を超えています。') + TOMSGQ(&JOB) SIGNOFF /********************************************************************/ /* ユーザースペースの削除 */ /********************************************************************/ CLEANUP: DLTUSRSPC USRSPC(&USRSPC) END: ENDPGM |
◇Q146. 同一スプールファイルを複数のプリンターに出力したい
◇A146.
以下の方法があります。
2.SAVE(*YES)をしておき、手でOUTQを指定する。
3.QUSRTOOLのDUPSPLFを使用する。
4.SNDNETSPLFを使用する。
◇Q147. 同一プログラムを他で使用中かどうかを判断したい
◇A147.
ALCOBJを使用した例をご紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
D QCMDEXC PR EXTPGM('QCMDEXC') D COMMAND 3000A CONST OPTIONS(*VARSIZE) D LENGTH 15P 5 CONST D PSDS SDS D PGMNAME 334 343A D CMD S 200A VARYING D MSG S 52A ******************************************************************* * ALCOBJ OBJ(PGMNAME) ******************************************************************* C EVAL CMD = 'ALCOBJ OBJ((' + %TRIM(PGMNAME) + C ' *PGM *EXCL)) WAIT(1)' C CALLP(E) QCMDEXC(CMD: %LEN(CMD)) C IF %ERROR C EVAL MSG = '誰か使用中です。' C DSPLY MSG C EVAL *INLR = *ON C RETURN C ENDIF ******************************************************************* * 誰も使用していないので処理を行う。 ******************************************************************* C EVAL MSG = '終了するなら実行キー' C DSPLY MSG ******************************************************************* * DLCOBJ OBJ(PGMNAME) ******************************************************************* C EVAL CMD = 'DLCOBJ OBJ((' + %TRIM(PGMNAME) + C ' *PGM *EXCL))' C CALLP QCMDEXC(CMD: %LEN(CMD)) C EVAL *INLR = *ON |
1 2 3 4 5 6 7 8 9 10 |
プログラム・メッセージの表示 QSYS のサブシステム QINTER のジョブ 290399/KANEKO/QPADEV0004 が 05/08/18 20: DSPLY 誰か使用中です。 応答を入力して,実行キーを押してください。 応答 . . . F3= 終了 F12= 取消し |
◇Q148. 夜間バッチ後のバックアップで、テープが何本使用されたかを調べたい
◇A148.
以下の方法で調べることができます。
2.OUTFILEに指定されたファイルを使用してボリューム識別コードを抜き取る。
3.ボリューム識別コードをカウントする。
◇Q149. 対話型でOVRPRTFを指定しているが効いていない
◇A149.
DSPOVRで一時変更が表示されるか確認してください。
表示される場合は、OPT=8でレベル*JOBになっていると後でOVRPRTFしたものは有効になりません。
DLTOVR FILE(xxxx) LVL(*JOB)を行ってください。
◇Q150. 対話型で実行中に、知らない間にライブラリーリストに追加されている
◇A150.
DSPJOBLOGで下記メッセージを探して、「ライブラリー xxxxx がライブラリー・リストに追加された。」
F1→F9を押してください。
ここで表示された送信先プログラムでライブラリーリストの追加を行っています。