概要
- 表示装置に、ファンクションキーを設置する際に、CAとCFの2種類の方法があります。詳しく説明できないので、実際にやってみることにしました。
- 結果より、画面に入力された値を使用する場合は、CFを使うということ。「F3:終了」など値を使用する必要がない場合は、CAで十分ということでしょう。
動作結果
下記のような画面を作って試してみました。
機能キーCAの場合
A CA09
機能キーCFの場合
A CF09
サンプルソース
画面ファイル(SAMPLE08D)
A DSPSIZ(24 80 *DS3) A *DS3 MSGLOC(24) A PRINT A** FMT10 ======================================================== A R FMT10 TEXT('レコード1') A KEEP LOCK BLINK OVERLAY PUTOVR A CA03 A CA09 A CHANGE(60 '* M.D.T *') A MDTOFF(*ALL) A* ------------------------------------ * A 01 02'画面1' A DSPATR(HI RI) A** A* ------------------------------------ * A 03 02'フィールド:' A DSPATR(HI) A** A D1FLD1 10 B +1 A TEXT('フィールド1') A OVRDTA OVRATR A DSPATR(UL) A* A 07 10'※F9打鍵で画面2を表示します。' A 08 12'(1) 入力→F9' A 09 12'(2) 入力→ENTER→F9' A* A** FMT20 ======================================================== A R FMT20 TEXT('レコード2') A KEEP LOCK BLINK OVERLAY PUTOVR A CA03 A CHANGE(60 '* M.D.T *') A MDTOFF(*ALL) A* ------------------------------------ * A 11 02'画面2' A DSPATR(HI RI) A* ------------------------------------ * A 13 02'フィールド:' A DSPATR(HI) A** A D2FLD1 10 B +1 A TEXT('フィールド2') A OVRDTA OVRATR A DSPATR(UL)
制御プログラム(SAMPLE08)
H DATEDIT(*YMD/) // F**************************************************************** F*ファイル定義 F**************************************************************** F** DISPLAY FILE ** FSAMPLE08D CF E WORKSTN F* D**************************************************************** D*変数定義 D**************************************************************** D*実行制御 D W@NEXT S 5A D* C**************************************************************** C*MAIN-ROUTINE C**************************************************************** C* C*INITIALIZE C EXSR #INZ10 C* C*MAIN LOOP B001 C W@NEXT DOWNE 'FIN10' C*DSPLAY10 B002 C W@NEXT CASEQ 'DSP10' #DSP10 C*DSPLAY20 X002 C W@NEXT CASEQ 'DSP20' #DSP20 C* E002 C ENDCS C* E001 C ENDDO C* C*FINALIZE C EXSR #FIN10 C* C**************************************************************** C* INITIALIZE C**************************************************************** C* C #INZ10 BEGSR C* /FREE // SET DEFAULT NEXT MODULE W@NEXT = 'FIN10' ; // SET NEXT MODULE W@NEXT = 'DSP10' ; /END-FREE C* C ENDSR C* C**************************************************************** C* DSPLAY10 C**************************************************************** C* C #DSP10 BEGSR C* B001 C DO *HIVAL C*画面入出力 C EXFMT FMT10 C* CMD キーの判断 C* (終了F03 ? ) * B002 C *INKC IFEQ *ON C MOVEL 'FIN10' W@NEXT C MOVEL *ON *IN10 E002 C END C* (表示F09 ? ) * B002 C *INKI IFEQ *ON C MOVEL D1FLD1 D2FLD1 C MOVEL 'DSP20' W@NEXT C MOVEL *ON *IN10 C* E002 C END E001 C N10 END C* C MOVEL *OFF *IN10 C* C ENDSR C* C**************************************************************** C* DSPLAY20 C**************************************************************** C* C #DSP20 BEGSR C* C*画面の入出力 B001 C DO *HIVAL C EXFMT FMT20 C* CMDキー判断 C* (終了F03 ? ) * B002 C *INKC IFEQ *ON C MOVEL 'FIN10' W@NEXT C MOVEL *ON *IN10 E002 C END E001 C N10 END C* C MOVEL *OFF *IN10 C* C ENDSR C* C**************************************************************** C* FINALIZE C**************************************************************** C #FIN10 BEGSR C* C MOVEL *ON *INLR C RETURN C* C ENDSR C*