6 |
もう少しだけ直しました。 |
|
EXCHANGE 2004-8-20 13:09
[返信] [編集]
もう少しだけ直しました。 いかがでしょうか?
MOVE 1 TO FOCUS-POSITION.
MOVE 2 TO FOCUS-POSITION-MAX.
MOVE SPACE TO END-STATUS.
MOVE SPACE TO WINDOW-STATUS.
*
PERFORM UNTIL END-STATUS = "P9"
OR WINDOW-STATUS = "EXIT"
*
EVALUATE FOCUS-POSITION
WHEN 1
ACCEPT ACEP-A-ACP
EVALUATE END-STATUS
WHEN "09"
SUBTRACT 1 FROM FOCUS-POSITION
WHEN OTHER
DISPLAY ACEP-A-DSP
PERFORM ACEP-A-CHECK-SUB
IF ERR-FLAG = 1
THEN
DISPLAY ERROR-MSG-A
ELSE
ADD 1 TO FOCUS-POSITON
END-IF
END-EVALUATE
WHEN 2
ACCEPT ACEP-B-ACP
EVALUATE END-STATUS
WHEN "09"
SUBTRACT 1 FROM FOCUS-POSITION
WHEN OTHER
DISPLAY ACEP-B-DSP
PERFORM ACEP-B-CHECK-SUB
IF ERR-FLAG = 1
THEN
DISPLAY ERROR-MSG-B
ELSE
ADD 1 TO FOCUS-POSITON
END-IF
END-EVALUATE
WHEN OTHER
CONTINUE
END-EVALUATE
*
IF FOCUS-POSITION = 0
THEN MOVE 1 TO FOCUS-POSITION
END-IF
*
IF FOCUS-POSITION > FOCUS-POSITION-MAX
THEN MOVE "EXIT" TO WINDOW-STATUS
END-IF
*
END-PERFORM.
|
7 |
Re:もう少しだけ直しました(その2) |
|
EXCHANGE 2004-8-21 12:20
[返信] [編集]
もう少しだけ直しました。(その2) いかがでしょうか??
*
MOVE 1 TO FOCUS-POSITION.
MOVE 2 TO FOCUS-POSITION-MAX.
MOVE SPACE TO END-STATUS.
MOVE SPACE TO WINDOW-STATUS.
*
PERFORM UNTIL END-STATUS = "P9"
OR WINDOW-STATUS = "EXIT"
*
EVALUATE FOCUS-POSITION
WHEN 1
ACCEPT ACEP-A-ACP
EVALUATE END-STATUS
WHEN "09"
SUBTRACT 1 FROM FOCUS-POSITION
WHEN "01"
DISPLAY ACEP-A-DSP
PERFORM ACEP-A-CHECK-SUB
IF ERR-FLAG = 1
THEN
DISPLAY ERROR-MSG-A
ELSE
ADD 1 TO FOCUS-POSITON
END-IF
WHEN OTHER
CONTINUE
END-EVALUATE
WHEN 2
ACCEPT ACEP-B-ACP
EVALUATE END-STATUS
WHEN "09"
SUBTRACT 1 FROM FOCUS-POSITION
WHEN "01"
DISPLAY ACEP-B-DSP
PERFORM ACEP-B-CHECK-SUB
IF ERR-FLAG = 1
THEN
DISPLAY ERROR-MSG-B
ELSE
ADD 1 TO FOCUS-POSITON
END-IF
WHEN OTHER
CONTINUE
END-EVALUATE
WHEN OTHER
CONTINUE
END-EVALUATE
*
IF FOCUS-POSITION = 0
THEN MOVE 1 TO FOCUS-POSITION
END-IF
*
IF FOCUS-POSITION > FOCUS-POSITION-MAX
THEN MOVE "EXIT" TO WINDOW-STATUS
END-IF
*
END-PERFORM.
|
8 |
Re:もう少しだけ直しました(その2) |
|
江須扇 2004-8-22 12:53
[返信] [編集]
EXCHAGEさん早速いろいろと回答を頂きありがとうございます。 いろいろと考えていただきありがとうございます。
結論としてはやはり自分で何らかのスイッチを定義する必要があると言う事ですか。 A−VXのCOBOLの機能で使えるものは無いということですね。
もう一度、やりたい事を説明しますと
項目A入力 ↓__↑(BTABを押すと項目Aに戻る) 項目B入力 ↓__↑(項目Bに戻る、入力すると結果表示に行く) 結果表示
という処理です。
EXCHAGEさんの例では結果表示はもう一ランク上で括れということですね。
*
MOVE 1 TO FOCUS-POSITION.
MOVE 2 TO FOCUS-POSITION-MAX.
MOVE SPACE TO END-STATUS.
MOVE SPACE TO WINDOW-STATUS.
*
PERFORM UNTIL END-STATUS = "P9" ←私か追加した部分
OR WINDOW-STATUS = "EXIT" ←私か追加した部分
PERFORM UNTIL END-STATUS = "P9"
OR WINDOW-STATUS = "EXIT"
*
〜中略〜
(EXCHANGEさんの内容)
*
END-PERFORM
結果表示処理 ←私か追加した部分
MOVE 2 TO FOCUS-POSITION. ←私か追加した部分
END-PERFORM. ←私か追加した部分
STOP RUN. ←私か追加した部分
|
9 |
Re:もう少しだけ直しました(その2) |
|
EXCHANGE 2004-8-22 13:50
[返信] [編集]
☆ 「雛形」ではカーソルの位置の制御を、FOCUS-POSITIONで
行っていますので、
例えば項目Bの入力後、項目Bの再入力へLOOPさせたい場合は、 FOCUS-POSITIONを変更せずに進めるとうまくいくのでは
ないかと思います。(間違ってたらごめんなさい)
項目入力時に(HTAB)(BSKIP)以外のキーを押下した場合も(F9)をのぞいて同じ項目の再入力に戻ります。
☆ なおA−VXの場合、SKIPキーの扱いが問題かとも思います。
経験された方はご存じと思うのですが、数字項目の表示位置が初期状態では「空白」(=文字)となるので「0」等を編集表示(例:ZZZZ−)しておかないと、いきなりSKIPを押下−−>「NON−NUMERIC」エラーになります。入力後、カンマ付編集をしている場合も(カンマが文字と見なされるので)要注意です。この辺をうまく織り込もうとすると「雛形」を使っても結構、面倒な気がします。
*
MOVE 1 TO FOCUS-POSITION.
MOVE 2 TO FOCUS-POSITION-MAX.
MOVE SPACE TO END-STATUS.
MOVE SPACE TO WINDOW-STATUS.
*
PERFORM UNTIL END-STATUS = "P9"
OR WINDOW-STATUS = "EXIT"
*
EVALUATE FOCUS-POSITION
WHEN 1
ACCEPT ACEP-A-ACP
EVALUATE END-STATUS
WHEN "09"
SUBTRACT 1 FROM FOCUS-POSITION
WHEN "01"
DISPLAY ACEP-A-DSP
PERFORM ACEP-A-CHECK-SUB
IF ERR-FLAG = 1
THEN
DISPLAY ERROR-MSG-A
ELSE
ADD 1 TO FOCUS-POSITON
END-IF
WHEN OTHER
CONTINUE
END-EVALUATE
WHEN 2
ACCEPT ACEP-B-ACP
EVALUATE END-STATUS
WHEN "09"
SUBTRACT 1 FROM FOCUS-POSITION
WHEN "01"
DISPLAY ACEP-B-DSP
PERFORM ACEP-B-CHECK-SUB
IF ERR-FLAG = 1
THEN
DISPLAY ERROR-MSG-B
ELSE
(処理結果表示)
(FOCUS-POSITONを1UPしない)
END-IF
WHEN OTHER
CONTINUE
END-EVALUATE
WHEN OTHER
CONTINUE
END-EVALUATE
*
IF FOCUS-POSITION = 0
THEN MOVE 1 TO FOCUS-POSITION
END-IF
*
IF FOCUS-POSITION > FOCUS-POSITION-MAX
THEN MOVE "EXIT" TO WINDOW-STATUS
END-IF
*
END-PERFORM.
|
10 |
Re:もう少しだけ直しました(その2) |
|
江須扇 2004-8-24 15:34
[返信] [編集]
EXCHANGEさん、いろいろとありがとうございます。
流れの基本は私と同じと思いましたが大きく違うところが解りました。 私はどうしてもメモリの少ない時の癖でプログラムの解りやすさより、ステップ数重視で1ステップでも少なくなる事を考えてしまいます。 保守性を考えたらわかり易さ重視の方が良いようですね。 多分、私の元のコーディングは WHEN SWITCH−BTABで1項目の入力 WHEN SWITCH−HTABで2項目の入力 になっており意味不明という事ですね。 そうですステップ数削減で意味不明です。 3項目を作ったどうするか考えておりませんでした。 それにしてもCOBOL側でもっとステップ数のすくなくなる 命令がないのでしょうかね? |