12.9.Q.画面のカーソル位置の取りだし方を教えて下さい |
ファイル情報データ構造から取りだす
データ管理バージョン 3A.2.2 ICF ファイルおよび表示装置ファイルの入出力フィードバック域
これで、データ構造に指定すべき桁数が分かりました。 (14.22. ICF ファイルおよび表示装置ファイルの入出力フィードバック域を参考にして下さい。) 画面ファイル TESTDI
RPGソースファイル TESTI
Z-ADD0をしっかりしている事を見て下さい。バイナリはソースで定義が2桁なら、プログラム内部では4桁のパックの数字になります。そのとき DS初期値のX40(ブランク)も数字に変換してしまいます。これをさけるために、*LOVALをセットしても良いのですが、どうせ数字なので、バイナリフィールドを0クリアした方がわかりやすいと、思います。 右下のエミュレーションの出すカーソル位置に注目(11/033)ですね。これで、実行キーをたたくと、ファイル情報データ構造からカーソル位置を取りだします。 尚、この機能は、ファイル情報データ構造の機能の一つです。画面ファイルも「装置ファイル」なので、そのファイルの情報を取り出せます。 RTNCSRLOCに付いてカーソル位置を取りだす目的が、フィールドの割り出しならば、こちらが便利です。カーソル位置は分かりませんが、実行キーを押されたときのカーソルが置かれていたレコード様式やフィールド名や、フィールド内のカーソルの位置をもらえます。 画面ファイル TESTD A PRINT A INDARA A CA03(03) A*-------------------------------------* A R FMT01 A*-------------------------------------* A RTNCSRLOC(*RECNAME &RCDNAM A &CSRLOC) A FLDNAM 10A H A RCDNAM 10A H A CSRLOC 4S 0H A* A 7 36'LINE' A 7 45'COLUMN' A 8 24'INFDS ==>' A V1LIN 3S 0O 8 36DSPATR(HI) A V1COL 3S 0O 8 47DSPATR(HI) A 10 20'RTNCSRLOC ==>' A V1RCD 10A O 10 36DSPATR(HI) A V1FLD 10A O 10 47DSPATR(HI) A V1CSR 4S 0O 10 58DSPATR(HI) RPGソース TEST FTESTD CF E WORKSTN F KINFDS INFDS I****************************************************** I* D E F I N E C O N S T A N T * I****************************************************** I X'33' C F3 I****************************************************** I* D E F I N E D A T A - S T R U C T U R E * I****************************************************** IINFDS DS I 369 369 PUSHED I 370 371 LINCLM I DS I B 1 20DSWRK I 2 2 DSWRKB C****************************************************** C* M A I N - R O U T I N E ; C****************************************************** C *IN03 DOUEQ*ON : C EXFMTFMT01 : C *IN03 IFEQ *OFF : C* : C Z-ADD0 DSWRK : C MOVELLINCLM DSWRKB : C Z-ADDDSWRK V1LIN : C* : C Z-ADD0 DSWRK : C MOVE LINCLM DSWRKB : C Z-ADDDSWRK V1COL : C* : C MOVELRCDNAM V1RCD : C MOVELFLDNAM V1FLD : C Z-ADDCSRLOC V1CSR : C* : C END ; C END ; C* ; C MOVE *ON *INLR ; C RETRN ; 先ほどのサンプルと違えて、わざと、DSWRKを一つでやってみました。勿論、行と桁を各々一個ずつ定義しても良いのです。(その方がきれいですね。)別に、このDSWRKやファイル情報データ構造は、RTNCSRLOCとは関係ないです。RTNCSRLOCを単独で使うことも勿論可能です。ここでは、比較したかったのです。 もう一度、呼び出して、今度はフィールドの存在しない場所にカーソルを移動して、実行キーを押して見ると、 となり、RTNCLSLOCでは何も戻ってきません。 また、上記サンプルのRTNCSRLOCは便利なので、知って置いた方がいいでしょう。実行キーを押すと、そのときカーソルの置かれていた、「レコード様式名」「フィールド名」「そのフィールドの左から何桁めか」を返してきます。上記のプログラムをコピーして、実行してみて下さい。また、サブファイルの上のカーソルの置かれていたサブファイルレコードの位置を取りだすのは、SFLCSRRRNがあります。 1999/7/11 |
You are at K's tips-n-kicks of AS/400
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||