Language detail: COBOL
Coverage: 2.22%
|
number of '+' ratings |
contribution for coverage |
Unsolved challenges
- 文字列型日時ののN秒後時間取得 (Nested Flatten)
- LL Golf Hole 8 - 横向きのピラミッドを作る (Nested Flatten)
- LL Golf Hole 7 - バイト数を読みやすくする (Nested Flatten)
- LL Golf Hole 6 - 10進数を2進数に基数変換する (Nested Flatten)
- LL Golf Hole 5 - 最上位の桁を数え上げる (Nested Flatten)
codes
九九の表示
(Nested
Flatten)
特に工夫はありません。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.
|





eller
#6169()
[
COBOL
]
Rating0/0=0.00
http://ja.doukaku.org/comment/6132/は一般のCOBOLではなくYCobol独自の書式だったので、より一般的な書式のものに書き換えました。 OpenCOBOLでのコンパイルに成功、動作確認済み。
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.Rating0/0=0.00-0+