如何在 AS/400 應用程式中抓取游標位置 ?
AS/400 系統無法像 PC 軟體直接追蹤使用者敲擊哪一鍵, AS/400 是於終端機
將透過按 "執行鍵(ENTER)"整個劃面資料送出至 AS/400 的, AS/400 處理完資
料後, 再將結果畫面送回終端機, 故 AS/400 應用程式中抓取游標位置, 須按
按 "執行鍵(ENTER)", 才能得到游標位置.
方法有兩種 :
一 : 於程式中畫面檔案宣告 INFDS 取其欄位值加以計算得知,
二 : 直接於畫面檔案 DDS 中加入 RTNCSRLOC Keyword , 取其系統傳回值,
而 RTNCSRLOC Keyword 有二種指定方式,
一種為取 游標位置 RTNCSRLOC(*WINDOW &ROWN &COLN),
另一種取欄位名稱 RTNCSRLOC(&RCDNAM &FLDNAM &CSRLOC)
--------------------------------
以下是畫面及程式 Source,
DSPF : CSRPOSD
A PRINT
A INDARA
A CA03(03)
A*-------------------------------------*
A R FMT01
A*-------------------------------------*
A RTNCSRLOC(&RCDNAM &FLDNAM -
A &CSRLOC)
A RTNCSRLOC(*WINDOW &ROWN -
A &COLN)
A FLDNAM 10A H
A RCDNAM 10A H
A CSRLOC 4S 0H
A ROWN 3S 0H
A COLN 3S 0H
A*
A 1 2'CSRPOSD'
A 1 30'Cursor Position Test'
A 1 72DATE
A EDTCDE(Y)
A USER 10A O 2 2
A 2 72TIME
A EDTWRD(' : : ')
A 7 38'LINE'
A 7 47'COLUMN'
A 8 27'INFDS ==>'
A V1LIN 3S 0O 8 38DSPATR(HI)
A V1COL 3S 0O 8 49DSPATR(HI)
A 10 2'RTNCSRLOC(*WINDOW &ROWN &COLN) ==>'
A ROW 3S 0O 10 38DSPATR(HI)
A COL 3S 0O 10 49DSPATR(HI)
A 12 2'RTNCSRLOC(&RCDNAM &FLDNAM &CSRLOC)'
A V1RCD 10A O 12 38DSPATR(HI)
A V1FLD 10A O 12 49DSPATR(HI)
A V1CSR 4S 0O 12 60DSPATR(HI)
*
A 14 27'TEXT ==>'
A TEXT 30A B 14 38
*
A 23 2'F3=EXIT'
A 22 23'MOVE YOUR CURSOR AND PRESS ENTER'
DSPATR(RI)
A 24 67'Vengoal Chang'
DSPATR(HI)
RPGLE : CSRPOSR
FCSRPOSD CF E WORKSTN
F INFDS(INFDS)
D******************************************************
D* D E F I N E PROGRAM STATUS PARM *
D******************************************************
D SDS
D PGMID 1 10
D WRSTN 244 253
D USER 254 263
D******************************************************
D* D E F I N E C O N S T A N T *
D******************************************************
D F3 C CONST(X'33')
D******************************************************
D* D E F I N E D A T A - S T R U C T U R E *
D******************************************************
D INFDS DS
D KEY 369 369
D LINCLM 370 371
D DS
D DSWRK 1 2B 0
D DSWRKB 2 2
C******************************************************
C* M A I N - R O U T I N E :
C******************************************************
C *IN03 DOUEQ *ON
C EXFMT FMT01
C *IN03 IFEQ *OFF
C*
C Z-ADD 0 DSWRK
C MOVEL LINCLM DSWRKB
C Z-ADD DSWRK V1LIN
C*
C Z-ADD 0 DSWRK
C MOVE LINCLM DSWRKB
C Z-ADD DSWRK V1COL
C*
C Eval ROW = ROWN
C Eval COL = COLN
C*
C MOVEL RCDNAM V1RCD
C MOVEL FLDNAM V1FLD
C Z-ADD CSRLOC V1CSR
C*
C END
C END
C*
C MOVE *ON *INLR
C RETURN
參考文件 :
ILE RPG for AS/400 Reference, SC09-2508-11,
DDS for display files, SC41-5712
A blog about IBM i (AS/400), MQ and other things developers or Admins need to know.
星期二, 10月 31, 2023
2000-03-20 如何在 AS/400 應用程式中抓取游標位置 ?
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言