0

実際、私は実装について詳細を求めているわけではありません。画面全体でサブファイルを使用して単一の選択リストを実装する方法は知っていますが、同じ原則をウィンドウに適用しようとすると、期待どおりに動作しませんでした。ウィンドウとサブファイルの DDS は次のとおりです。

A        R SWCCHK03                      SFL
A          S0AVAL        1Y  0H          SFLCHCCTL
A          S0OPTN       10A   O     
A        R SWCCHK04                      SFLCTL(SWCCHK03)
A                                        OVERLAY
A                                        SFLDSP
A                                        SFLDSPCTL
A 30                                     SFLCLR
A 31                                     SFLEND
A                                        SFLSIZ(0006)
A                                        SFLPAG(0005)
A                                        WINDOW(*DFT 13 32)
A                                        SFLSNGCHC(*RSTCSR *AUTOSLT)
A                                     1 3'Option'

選択したオプションを表示および処理するための RPGLE のループは次のとおりです。

C      SR300      BEGSR
C      *IN12      DOWEQ      *OFF
C                 EXFMT      SWCCHK04
C      *IN12      IFEQ       *OFF
C                 GOTO       SR300E
C                 ENDIF
C                 READC      SWCCHK03
C      S0AVAL     IFEQ       4
C                 ITER
C                 ENDIF
                  .
                  .
                  .
C                 ENDDO
C      SR300E     ENDSR

特定の状況下では、S0AVAIL を 4 に設定して、単一選択リストの一部のオプションが使用できなくなり、ユーザーがそのようなオプションを選択しようとすると、ウィンドウと単一選択リストが画面に残り、カーソルがユーザーがウィンドウを終了するか、使用可能なオプションを選択するまで、最初のオプション。

ユーザーが利用可能なオプションを選択する場合、この実装は問題ありません。ただし、ユーザーが使用できないオプションを選択すると、ウィンドウは必要に応じて画面に残りますが、カーソルは選択リストの最初のオプションにとどまるのではなく、ウィンドウの左上隅に移動します。また、カーソルを手動でオプションに戻すことができたとしても、次に使用できないオプションを選択すると、カーソルは再びウィンドウの隅に移動します。どうしてそうなった?そして、この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

このコードはどのようにコンパイルされますか? 32 列幅のウィンドウに 50 列のサブファイル フィールド (S0OPTN) があります。実行すべきと思われるコードを実行していることを確認してください。

同様のコードを試してみると、S0AVAL=4 の行を選択できません。利用できない選択肢をどのように「選択」できますか? カーソルキーを使用すると、カーソルが使用できない選択を飛び越えます。マウスでクリックすると、「入力が禁止されています」というキーボード エラーが発生します。どの端末エミュレータを使用していますか? Personal Communications 6.0 for Windows を使用しています。

作業コードは次のとおりです。

 A*
 A          R SWCCHK03                  SFL
 A            S0AVAL         1Y 0H      SFLCHCCTL
 A            S0OPTN        10A  O  6 11
 A*
 A          R SWCCHK04
 A                                      SFLCTL(SWCCHK03)
 A                                      OVERLAY
 A  27                                  SFLDSP
 A N28                                  SFLDSPCTL
 A  28                                  SFLCLR
 A  29                                  SFLEND
 A                                      SFLSIZ(06)
 A                                      SFLPAG(05)
 A                                      CF12(12)
 A                                      WINDOW(*DFT 13 32)
 A                                      SFLSNGCHC(*RSTCSR *AUTOSLT)
 A            SFLRRN         4S 0H      SFLRCDNBR(CURSOR)
 A                                  1 10'Title'
 A            CHOICE         4S 0   3  1
 A                                  4  5'Choose one'                               

 h/copy qrpglesrc,stdhspec
 h* dbgview(*list)

 fsotest    cf   e             workstn
 f                                     SFILE(SWCCHK03:RRN)

 c* clear sfl
 c                   z-add     1             sflrrn
 c                   setoff                                       272829
 c                   seton                                        28
 c                   write     SWCCHK04
 c                   setoff                                       28
 c* load sfl
 c     1             do        9             rrn               4 0
 c                   movel     rrn           s0optn
 c                   if        rrn = 4
 c                   z-add     4             s0aval
 c                   else
 c                   z-add     0             s0aval
 c                   endif
 c                   write     SWCCHK03
 c                   seton                                        27
 c                   enddo

 C     *IN12         DOWEQ     *OFF
 C                   EXFMT     SWCCHK04

 C     *IN12         IFEQ      *ON
 C                   LEAVE
 C                   ENDIF

 C                   READC     SWCCHK03                               80
 C  n80              do
 C                   movel     rrn           choice
 C                   z-add     0             S0aval
 C                   update    SWCCHK03
 C                   enddo
 C                   ENDDO

 c                   seton                                        lr
于 2012-09-04T16:01:00.227 に答える