• ベストアンサー

初級シスアドの問題が分かりません。

初級シスアド 平成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 -------------- という風になるのではと思ったのですが・・・。 どなたか解説をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ann_dv
  • ベストアンサー率43% (528/1223)
回答No.4

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 -------------- となります。 これでご理解頂けたでしょうか。

Excalibur
質問者

お礼

回答ありがとうございます。 スッキリしました。 i=3の時に、線を引くだけでなくレコードの印字も行なっていたのですね! やっと意味が分かりました。

その他の回答 (3)

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.3

i=3の時、線を引くだけでなく、 線を引いた後で詳細を印刷していますね? 次回、iが2にされても線は引かれないで 詳細の印刷がありますから、 線と線の間は詳細が2行になります。

Excalibur
質問者

お礼

回答ありがとうございます。

  • ann_dv
  • ベストアンサー率43% (528/1223)
回答No.2

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 -------------- と、なるはずです。

  • denden015
  • ベストアンサー率27% (40/147)
回答No.1

マクロなので繰り返す処理になります. (i=1) XXXXX (i=2) XXXXX (i=3) ----- (i=1) XXXXX (i=2) XXXXX (i=3) ----- ・・・・・・・・

Excalibur
質問者

お礼

回答ありがとうございます。

関連するQ&A