Language detail: COBOL

Coverage: 2.22%
number of '+' ratings
contribution for coverage

Unsolved challenges

codes

Feed

Used modules

九九の表示 (Nested Flatten)

http://ja.doukaku.org/comment/6132/は一般のCOBOLではなくYCobol独自の書式だったので、より一般的な書式のものに書き換えました。 OpenCOBOLでのコンパイルに成功、動作確認済み。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
       IDENTIFICATION DIVISION.
       PROGRAM-ID. DOUKAKU-62.
      *
       ENVIRONMENT DIVISION.
      *
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  WK-KUKU.
           03 L      PIC 9.
           03 FILLER PIC X(3) VALUE " * ".
           03 R      PIC 9.
           03 FILLER PIC X(3) VALUE " = ".
           03 RESULT PIC Z9.
      *
       PROCEDURE DIVISION.
           MOVE ZERO TO L.
           PERFORM UNTIL L = 9
               ADD 1 TO L
               MOVE ZERO TO R
               PERFORM UNTIL R = 9
                   ADD 1 TO R
                   MULTIPLY L BY R GIVING RESULT
                   DISPLAY WK-KUKU
               END-PERFORM
           END-PERFORM.
           STOP RUN.

特に工夫はありません。COBOL向きのお題かもしれませんね。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
* 九九の表示 - YCobol 0.19にて動作確認
IDENTIFICATION DIVISION.
PROGRAM-ID. DOUKAKU-62.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01 I PIC 9 VALUE 0.
01 J PIC 9.
01 K PIC Z9.
*
PROCEDURE DIVISION.
MAIN.
    PERFORM UNTIL I >= 9
        MOVE 0 TO J
        ADD 1 TO I
        PERFORM UNTIL J >= 9
            ADD 1 TO J
            COMPUTE K = I * J
            DISPLAY I " * " J " = " K
        END-PERFORM
    END-PERFORM
    STOP RUN.
変形Fizz-Buzz問題 (Nested Flatten)

お題の一部が飛んでしまっていました。すみません。書き直してみました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
       IDENTIFICATION DIVISION.
       PROGRAM-ID. FIZZ-BUZZ.
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 I PIC 9(2) VALUE 0.
       01 DIV PIC 9(2) VALUE 0.
       01 REM PIC 9(2) VALUE 0.
       01 EDIT PIC Z9.
       01 SKIP PIC 9 VALUE 0.
       PROCEDURE DIVISION.
       PERFORM VARYING I FROM 1 BY 1 UNTIL I > 20
         DIVIDE I BY 15 GIVING DIV REMAINDER REM
         IF REM = 0 THEN
           MOVE I TO EDIT
           DISPLAY EDIT ":FizzBuzz"
           MOVE 1 TO SKIP
         END-IF
         DIVIDE I BY 3 GIVING DIV REMAINDER REM
         IF REM = 0 AND SKIP = 0 THEN
           MOVE I TO EDIT
           DISPLAY EDIT ":Fizz"
           MOVE 1 TO SKIP
         END-IF
         DIVIDE I BY 5 GIVING DIV REMAINDER REM
         IF REM = 0 AND SKIP = 0 THEN
           MOVE I TO EDIT
           DISPLAY EDIT ":Buzz"
           MOVE 1 TO SKIP
         END-IF
         IF SKIP = 0 THEN
           MOVE I TO EDIT
           DISPLAY EDIT ":hoge"
         END-IF
         MOVE 0 TO SKIP
       END-PERFORM
       STOP RUN.
勉強を兼ねてCOBOLで書いてみました。
ループのスキップ方法が分からなくてIF-ELSEネストになっています。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
       IDENTIFICATION DIVISION.
       PROGRAM-ID. FIZZ-BUZZ.
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 I PIC 9(2) VALUE 0.
       01 DIV PIC 9(2) VALUE 0.
       01 REM PIC 9(2) VALUE 0.
       01 EDIT PIC Z9.
       PROCEDURE DIVISION.
       PERFORM VARYING I FROM 1 BY 1 UNTIL I > 20
         DIVIDE I BY 15 GIVING DIV REMAINDER REM
         IF REM = 0 THEN
           MOVE I TO EDIT
           DISPLAY EDIT ":FizzBuzz"
         ELSE
           DIVIDE I BY 3 GIVING DIV REMAINDER REM
           IF REM = 0 THEN
             MOVE I TO EDIT
             DISPLAY EDIT ":Fizz"
           ELSE
             DIVIDE I BY 5 GIVING DIV REMAINDER REM
             IF REM = 0 THEN
               MOVE I TO EDIT
              DISPLAY EDIT ":Buzz"
            ELSE
              MOVE I TO EDIT
              DISPLAY EDIT ":hoge"
            END-IF
          END-IF
        END-IF
      END-PERFORM
      STOP RUN.
Hello, world! (Nested Flatten)
とりあえずHelloworldくらいは全言語埋めたいですねえ。
1
2
3
4
5
6
7
8
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD-01.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
MAIN.
	DISPLAY "Hello, world!"
	STOP RUN.

Index

Feed

Other

Link

Pathtraq

loading...