基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成19年 秋期 基本情報技術者 午後 問11
問11   COBOL

次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。

〔プログラムの説明〕

 B社は,取引先あてに請求書と振込用紙を発行し,取引先はその振込用紙を使って C 銀行に 請求金額を振り込む。このプログラムは,毎月 C 銀行から受け取る振込データと, 社内で管理している請求データの突合せを行って,入金確認リストを印字するものである。 突合せキーは,一意に振られている請求書コードである。

(1) 銀行から受け取る振込データ BANK-F は順ファイルで,レコード様式は, 次のとおりである。レコードは,振込日で昇順に整列されている。

 振込日
 8けた    
 請求書コード
 6けた    
 振込金額
 9けた    
 取引先名
 20 けた    

(2) 社内で管理している請求データ ACCOUNT-F は順ファイルで,レコード様式は, 次のとおりである。レコードは,請求書コードで昇順に整列されている。

 請求日
 8けた    
 請求書コード
 6けた    
 請求金額
 9けた    
 取引先名
 20 けた    

(3) 入金確認リストの印字様式は,次のとおりである。

摘求書コード   取引先名  入金予定金額   振込金額       差額        入金確認結果
XXXXXX     XXX … XX \,\\\,\\\,\\9 \,\\\,\\\,\\9 -,---,---,--9 XXX … XX
XXXXXX     XXX … XX \,\\\,\\\,\\9 \,\\\,\\\,\\9 -,---,---,--9 XXX … XX
 :                :           :             :             :           :

@ 入金確認リストの見出しは印刷済みとする。
A 入金予定金額には請求金額を印字する。
B 入金確認結果は,次の4種類のいずれかを印字する。

 印字メッセージ         意味
 OK     入金予定金額と振込金額が一致  
 UNMATCH     金額不一致  
 NOT PAID     振込みなし  
 NO BILL     請求なし  

〔プログラム〕
(行番号)

 1 DATA DIVISION.
 2 FILE SECTION.
 3 FD BANK-F.
 4 01 BANK-R                     PIC X(43).
 5 SD SORT-F.
 6 01 SORT-R.
 7    05 BANK-DATE               PIC 9(8).
 8    05 BANK-BILL-CD            PIC X(6).
 9    05 BANK-AMOUNT             PIC 9(9).
10    05 BANK-CUSTOMER-NM        PIC X(20).
11 FD ACCOUNT-F.
12 01 ACCOUNT-R.
13    05 ACCOUNT-DATE            PIC 9(8).
14    05 ACCOUNT-BILL-CD         PIC X(6).
15    05 ACCOUNT-AMOUNT          PIC 9(9).
16    05 ACCOUNT-CUSTOMER-NM     PIC X(20).
17 FD PRINT-F.
18 01 PRINT-R                    PIC X(128).
19 WORKING-STORACE SECTION.
20 01 W-BANK-BILL-CD             PIC X(6).
21 01 W-ACCOUNT-BILL-CD          PIC X(6).
22 01 P-DETAIL.
23    05 P-BILL-CD               PIC X(6).
24    05 FILLER                  PIC X(6).
25    05 P-CUSTOMER-NM           PIC X(20).
26    05 FILLER                  PIC X.
27    05 P-ACCOUNT-AMOUNT        PIC \,\\\,\\\,\\9.
28    05 FILLER                  PIC X.
29    05 P-BANK-AMOUNT           PIC \,\\\,\\\,\\9.
30    05 FILLER                  PIC X.
31    05 P-DIFF                  PIC -,---,---,--9.
32    05 FILLER                  PIC X.
33    05 P-MESSACE               PIC X(30).
34 PROCEDURE DIVISION.
35 MAIN-CTL.
36    SORT SORT-F ASCENDING KEY 
37         USING BANK-F
38         OUTPUT PROCEDURE MATCH-PROC.
39    STOP RUN.
40 MATCH-PROC.
41    OPEN INPUT  ACCOUNT-F.
42    OPEN OUTPUT PRINT-F.
43    PERFORM RETURN-BANK.
44    PERFORM READ-ACCOUNT.
45    PERFORM UNTIL W-BANK-BILL-CD    = HIGH-VALUE AND
46                  W-ACCOUNT-BILL-CD = HIGH-VALUE
47      MOVE SPACE TO P-DETAIL
48      EVALUATE TRUE
49         WHEN W-BANK-BILL-CD > W-ACCOUNT-BILL-CD
50              MOVE ACCOUNT-CUSTOMER-NM TO P-CUSTOMER-NM
51              MOVE ACCOUNT-BILL-CD  TO P-BILL-CD
52              MOVE ACCOUNT-AMOUNT   TO P-ACCOUNT-AMOUNT
53              
54              WRITE PRINT-R FROM P-DETAIL
55              PERFORM READ-ACCOUNT
56         WHEN W-BANK-BILL-CD = W-ACCOUNT-BILL-CD
57              MOVE BANK-CUSTOMER-NM TO P-CUSTOMER-NM
58              MOVE ACCOUNT-BILL-CD  TO P-BILL-CD
59              MOVE ACCOUNT-AMOUNT   TO P-ACCOUNT-AMOUNT
60              MOVE BANK-AMOUNT      TO P-BANK-AMOUNT
61              IF BANK-AMOUNT - ACCOUNT-AMOUNT = O THEN
62                 MOVE "OK" TO P-MESSACE
63              ELSE
64                 
65              END-IF
66              COMPUTE P-DIFF = BANK-AMOUNT - ACCOUNT-AMOUNT
67              WRITE PRINT-R FROM P-DETAIL
68              PERFORM READ-ACCOUNT
69              PERFORM RETURN-BANK
70         WHEN W-BANK-BILL-CD < W-ACCOUNT-BILL-CD
71              MOVE BANK-CUSTOMER-NM TO P-CUSTOMER-NM
72              MOVE BANK-BILL-CD     TO P-BILL-CD
73              MOVE BANK-AMOUNT      TO P-BANK-AMOUNT
74              
75              WRITE PRINT-R FROM P-DETAIL
76              
77      END-EVALUATE
78    END-PERFORM.
79    CLOSE ACCOUNT-F.
80    CLOSE PRINT-F.
81 *
82  RETURN-BANK.
83     RETURN SORT-F
84        AT END     MOVE HIGH-VALUE   TO W-BANK-BILL-CD
85        NOT AT END MOVE BANK-BILL-CD TO W-BANK-BILL-CD
86     END-RETURN.
87 *
88  READ-ACCOUNT.
89     READ ACCOUNT-F
90        AT END     MOVE HIGH-VALUE      TO W-ACCOUNT-BILL-CD
91        NOT AT END MOVE ACCOUNT-BILL-CD TO W-ACCOUNT-BILL-CD
92     END-READ.
設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア BANK-AMOUNT         イ BANK-BILL-CD
ウ BANK-CUSTOMER-NM      エ BANK-DATE

b〜e に関する解答群 ア MOVE "NO BILL" TO P-MESSAGE
イ MOVE "NOT PAID" TO P-MESSACE
ウ MOVE "UNMTCH" TO P-MESSACE
エ PERFORM READ-ACCOUNT
オ PERFORM RETURN-BANK
解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます

基本情報技術者試験


設問2 B社への振込手数料は,取引先が負担していたが,一部の大口取引に対しては, B社が振込手数料を負担することにした。この場合,銀行から受け取る振込金額は, 請求金額から振込手数料を差し引いた金額となる。振込手数料の金額とその負担先は, 請求金額によって決定される。振込手数料の計算には,次の様式の 手数料計算プログラム CHARCE を使用する。

    CALL "CHARCE" USING 請求金額 振込手数料

 手数料計算プログラムは,請求金額を基に,振込手数料を返す。ただし,B社が 負担しない場合はゼロを返す。

 この対応のため,プログラムを変更する。入金確認リストの入金予定金額は 請求金額から振込手数料を差し引いた金額を印字する。次の表中の に 入れる正しい答えを,解答群の中から選べ。

   処置      プログラムの変更内容
 行番号 33 と 34 の間に追加   01  W-CHARCE    PIC 9(6).  
  及び
に追加
 CALL "CHARCE" USING ACCOUNT-AMOUNT W-CHARCE  
 COMPUTE ACCOUNT-AMOUNT =
        ACCOUNT-AMOUNT - W-CHARGE

解答群

ア 行番号 47 と 48 の間      イ 行番号 49 と 50 の間
ウ 行番号 56 と 57 の問      エ 行番号 70 と 71 の間
解答 f ←クリックすると正解が表示されます

解答 g ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]