ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:Excalibur 初級シスアドの問題が分かりません。
困り度:
  • 困っています
初級シスアド 平成16年度秋季 問24です。
ファイル中のレコードを1レコードずつ印字するソフトウェアがある。このソフトウェアでは,明細行を印字する直前にマクロ記述を呼び出して実行する。次のマクロ記述を使って印字したものはどれか。ここで,ファイルの1レコードは1行の明細行(XXXX XXXX XXXXで表示)として印刷される。

〔マクロ仕様〕
1. マクロ記述は,記述した順番に従って実行される。
2. マクロ記述の中に変数を定義できる。初期値は0である。変数は,すべての明細行を印字し終わるまで,その内容を保持する。
3. マクロ記述の中で条件を指定できる。条件は“条件”欄に記述し,条件を満たした場合には,“動作”を実行する。“線引き”は,線(−で表示)を印字する。

〔マクロ記述〕
1. i+1→i 変数iに1を加える。
2. 変数iが3なら,線を印字する。
3. 変数iが3なら,iの値を1にする。
答えは、
XXXX XXXX XXXX
XXXX XXXX XXXX
--------------
XXXX XXXX XXXX
XXXX XXXX XXXX
--------------
なのですが、i=3のとき、線を引いた後、i=1となるので、
XXXX XXXX XXXX
XXXX XXXX XXXX
--------------
XXXX XXXX XXXX
--------------
という風になるのではと思ったのですが・・・。
どなたか解説をお願いします。
質問投稿日時:09/04/17 11:59
質問番号:4886194
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答20pt

回答者:ann_dv No.2ですが、先ほどの見解は間違えておりました。


i=0(初期値)
[1回めのマクロ発動]
i+1=1
[1回めのマクロ終了]
XXXX XXXX XXXX (1つめのレコードを印字)
[2回めのマクロ発動]
i+1=2
[2回めのマクロ終了]
XXXX XXXX XXXX (2つめのレコードを印字)
[3回めのマクロ発動]
i+1=3
-------------- (ここで変数iが3だから、線を印字する)
さらに、iが3だから、i=1になる。
[3回めのマクロ終了]
XXXX XXXX XXXX (3つめのレコードを印字)
[4回めのマクロ発動]
i+1=2
[4回めのマクロ終了]
XXXX XXXX XXXX (4つめのレコードを印字)
[5回めのマクロ発動]
i+1=3
-------------- (ここで変数iが3だから、線を印字する)
さらに、iが3だから、i=1になる。
[5回めのマクロ終了]

と言う流れで、印字結果は
XXXX XXXX XXXX
XXXX XXXX XXXX
--------------
XXXX XXXX XXXX
XXXX XXXX XXXX
--------------
となります。

これでご理解頂けたでしょうか。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:09/04/17 21:21
回答番号:No.4
この回答へのお礼回答ありがとうございます。

スッキリしました。
i=3の時に、線を引くだけでなくレコードの印字も行なっていたのですね!

やっと意味が分かりました。

回答

良回答10pt

回答者:Tasuke22 i=3の時、線を引くだけでなく、
線を引いた後で詳細を印刷していますね?

次回、iが2にされても線は引かれないで
詳細の印刷がありますから、
線と線の間は詳細が2行になります。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:09/04/17 12:19
回答番号:No.3
この回答へのお礼回答ありがとうございます。

回答

 

回答者:ann_dv iの初期値が0である以上、最初だけは3行表示されると思います。
各行を印刷する直前のiの値を想定すると・・
i=0
i+1=1
XXXX XXXX XXXX
i+1=2
XXXX XXXX XXXX
i+1=3
XXXX XXXX XXXX
--------------
i=1
i+1=2
XXXX XXXX XXXX
i+1=3
XXXX XXXX XXXX
--------------


と、なるはずです。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:09/04/17 12:15
回答番号:No.2
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

 

回答者:denden015 マクロなので繰り返す処理になります.

(i=1) XXXXX
(i=2) XXXXX
(i=3) -----
(i=1) XXXXX
(i=2) XXXXX
(i=3) -----
・・・・・・・・
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:09/04/17 12:06
回答番号:No.1
この回答へのお礼回答ありがとうございます。
最新から表示回答順に表示良回答のみ表示