/
worker.cob
88 lines (88 loc) · 3.48 KB
/
worker.cob
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
IDENTIFICATION DIVISION.
PROGRAM-ID. worker.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 RAND-NUM PIC 9(2).
01 CURRENT-TIME.
05 T-HOURS PIC 99.
05 T-MINS PIC 99.
05 T-SECS PIC 99.
05 T-MS PIC 999.
01 PLAYER-CHOICE PIC X(8) VALUE ZERO.
01 COMPUTER-CHOICE PIC X(10) VALUE ZERO.
01 CHOICE-IND PIC 9.
01 BLAH PIC 99.
01 HTTP-OK PIC A(3) VALUE '200'.
01 HTTP-BAD-REQUEST PIC A(3) VALUE '400'.
01 ERROR-NO-INPUT PIC A(24) VALUE 'please provide your pick'.
01 ARG-VALUE PIC S9(9) BINARY.
01 ARG-NAME PIC A(4) VALUE 'pick'.
01 ROCK PIC A(8) VALUE 'rock'.
01 SCISSORS PIC A(8) VALUE 'scissors'.
01 PAPER PIC A(8) VALUE 'paper'.
01 CHOICES.
05 CHOICE PIC A(8) OCCURS 3 TIMES.
01 RESULT PIC X(24) VALUE "lose".
PROCEDURE DIVISION.
CALL "get_http_form" USING ARG-NAME RETURNING ARG-VALUE.
EVALUATE TRUE
WHEN ARG-VALUE = 1
MOVE 'rock' TO PLAYER-CHOICE
WHEN ARG-VALUE = 2
MOVE 'scissors' TO PLAYER-CHOICE
WHEN ARG-VALUE = 3
MOVE 'paper' TO PLAYER-CHOICE
WHEN OTHER
MOVE ERROR-NO-INPUT TO RESULT
PERFORM RETURN-ERROR
STOP RUN
END-EVALUATE
DISPLAY "player: " PLAYER-CHOICE
MOVE ROCK TO CHOICE(1).
MOVE SCISSORS TO CHOICE(2).
MOVE PAPER TO CHOICE(3).
ACCEPT CURRENT-TIME FROM TIME.
COMPUTE RAND-NUM = FUNCTION RANDOM (T-MS) * 100.
DIVIDE RAND-NUM BY 3 GIVING BLAH REMAINDER CHOICE-IND.
MOVE CHOICE(CHOICE-IND + 1) TO COMPUTER-CHOICE.
IF PLAYER-CHOICE = COMPUTER-CHOICE
MOVE "tie" TO RESULT
END-IF.
IF PLAYER-CHOICE = 'rock' AND COMPUTER-CHOICE = 'scissors'
MOVE "win" TO RESULT
END-IF.
IF PLAYER-CHOICE = 'scissors' AND COMPUTER-CHOICE = 'paper'
MOVE "win" TO RESULT
END-IF.
IF PLAYER-CHOICE = 'paper' AND COMPUTER-CHOICE = 'rock'
MOVE "win" TO RESULT
END-IF.
CALL "set_http_status" USING HTTP-OK.
PERFORM SEND-JSON.
STOP RUN.
RETURN-ERROR.
CALL "set_http_status" USING HTTP-BAD-REQUEST
PERFORM SEND-JSON.
SEND-JSON.
CALL "append_http_body" USING "{"
CALL "append_http_body" USING '"result":'
CALL "append_http_body" USING '"'
CALL "append_http_body" USING RESULT
CALL "append_http_body" USING '"'
CALL "append_http_body" USING ',"player":'
IF PLAYER-CHOICE = ZERO
CALL "append_http_body" USING "null"
ELSE
CALL "append_http_body" USING '"'
CALL "append_http_body" USING PLAYER-CHOICE
CALL "append_http_body" USING '"'
END-IF.
CALL "append_http_body" USING ',"computer":'
IF COMPUTER-CHOICE = ZERO
CALL "append_http_body" USING "null"
ELSE
CALL "append_http_body" USING '"'
CALL "append_http_body" USING COMPUTER-CHOICE
CALL "append_http_body" USING '"'
END-IF.
CALL "append_http_body" USING "}".