-
Notifications
You must be signed in to change notification settings - Fork 0
/
02-strings.cob
90 lines (68 loc) · 3.44 KB
/
02-strings.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
89
90
IDENTIFICATION DIVISION.
PROGRAM-ID. Strings.
****************************
DATA DIVISION.
WORKING-STORAGE SECTION.
01 string1 PIC X(20) VALUE "Hello World!".
01 string2 PIC X(20) VALUE "Goodbye World!".
01 longstring PIC X(60) VALUE "..............................".
01 splitme PIC X(60)
VALUE "The Tragedy of Hamlet, Prince of Denmark".
01 split1 PIC X(10).
01 split2 PIC X(10).
01 split3 PIC X(10).
01 split4 PIC X(10).
01 split5 PIC X(10).
01 split6 PIC X(10).
01 uppercase PIC X(26) VALUE "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
01 lowercase PIC X(26) VALUE "abcdefghijklmnopqrstuvwxyz".
01 rot13 PIC X(26) VALUE "nopqrstuvwxyzabcdefghijklm".
01 counter PIC 99999 VALUE 0.
****************************
PROCEDURE DIVISION.
DISPLAY " --- Counting --- "
INSPECT string1 TALLYING counter FOR CHARACTERS.
DISPLAY "[+] Total number of characters: " counter.
MOVE 0 TO counter.
INSPECT string1 TALLYING counter FOR ALL "o".
DISPLAY "[+] Occurrences of the letter 'o': " counter.
MOVE 0 TO counter.
INSPECT string1 TALLYING counter FOR LEADING "H".
DISPLAY "[+] Characters if first letter is 'H': " counter.
MOVE 0 TO counter.
INSPECT string1 TALLYING counter FOR LEADING "X".
DISPLAY "[+] Characters if first letter is 'X': " counter.
MOVE 0 TO counter.
INSPECT string1 TALLYING counter
FOR CHARACTERS AFTER "Hello".
DISPLAY "[+] Characters following 'Hello': " counter.
DISPLAY " --- Replacing --- "
INSPECT string1 REPLACING ALL "Hello" BY "Hallo".
INSPECT string1 REPLACING ALL "World" BY " Welt".
DISPLAY "[+] German 'Hello World' = " string1.
INSPECT string1 REPLACING CHARACTERS BY "#".
DISPLAY "[+] Ultimate censorship = " string1.
DISPLAY " --- Converting --- "
INSPECT string2 CONVERTING lowercase TO uppercase.
DISPLAY "[+] Uppercased: " string2.
INSPECT string2 CONVERTING uppercase TO lowercase.
DISPLAY "[+] Lowercased: " string2.
INSPECT string2 CONVERTING lowercase TO rot13.
DISPLAY "[+] Rot13: " string2.
DISPLAY " --- Concatenating --- "
MOVE 20 TO counter.
STRING string1 string2 INTO longstring WITH POINTER counter.
DISPLAY "[+] Concatenated+offset: " longstring.
MOVE " " TO longstring.
STRING string1 string2 DELIMITED BY " " INTO longstring.
DISPLAY "[+] Partially concatenated: " longstring.
DISPLAY " --- Splitting --- "
UNSTRING splitme DELIMITED BY "," OR " "
INTO split1 split2 split3 split4 split5 split6.
DISPLAY "[+] Split parts: " split1 split2 split3 split4
split5 split6.
DISPLAY " --- Indexing substrings --- "
MOVE 8 TO counter.
MOVE splitme(4:counter) TO string1.
DISPLAY "[+] Indices 4 to 4+" counter ": " string1.
STOP RUN.