blob: 0b59f720b2de937d065f9f2176b0d455a0fffc09 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: COBOL
3" Maintainers: Davyd Ondrejko <vondraco@columbus.rr.com>
4" (formerly Sitaram Chamarty <sitaram@diac.com> and
5" James Mitchell <james_mitchell@acm.org>)
6" Last change: 2001 Sep 02
7
8" For version 5.x: Clear all syntax items
9" For version 6.x: Quit when a syntax file was already loaded
10if version < 600
11 syntax clear
12elseif exists("b:current_syntax")
13 finish
14endif
15
16" MOST important - else most of the keywords wont work!
17if version < 600
18 set isk=@,48-57,-
19else
20 setlocal isk=@,48-57,-
21endif
22
23syn case ignore
24
25syn match cobolKeys "^\a\{1,6\}" contains=cobolReserved
26syn keyword cobolReserved contained ACCEPT ACCESS ADD ADDRESS ADVANCING AFTER ALPHABET ALPHABETIC
27syn keyword cobolReserved contained ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED ALS
28syn keyword cobolReserved contained ALTERNATE AND ANY ARE AREA AREAS ASCENDING ASSIGN AT AUTHOR BEFORE BINARY
29syn keyword cobolReserved contained BLANK BLOCK BOTTOM BY CANCEL CBLL CD CF CH CHARACTER CHARACTERS CLASS
30syn keyword cobolReserved contained CLOCK-UNITS CLOSE COBOL CODE CODE-SET COLLATING COLUMN COMMA COMMON
31syn keyword cobolReserved contained COMMUNICATIONS COMPUTATIONAL COMPUTE CONFIGURATION CONTENT CONTINUE
32syn keyword cobolReserved contained CONTROL CONVERTING CORR CORRESPONDING COUNT CURRENCY DATA DATE DATE-COMPILED
33syn keyword cobolReserved contained DATE-WRITTEN DAY DAY-OF-WEEK DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE
34syn keyword cobolReserved contained DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING DECIMAL-POINT
35syn keyword cobolReserved contained DELARATIVES DELETE DELIMITED DELIMITER DEPENDING DESCENDING DESTINATION
36syn keyword cobolReserved contained DETAIL DISABLE DISPLAY DIVIDE DIVISION DOWN DUPLICATES DYNAMIC EGI ELSE EMI
37syn keyword cobolReserved contained ENABLE END-ADD END-COMPUTE END-DELETE END-DIVIDE END-EVALUATE END-IF
38syn keyword cobolReserved contained END-MULTIPLY END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN
39syn keyword cobolReserved contained END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT END-UNSTRING
40syn keyword cobolReserved contained END-WRITE ENVIRONMENT EQUAL ERROR ESI EVALUATE EVERY EXCEPTION EXIT
41syn keyword cobolReserved contained EXTEND EXTERNAL FALSE FD FILE FILE-CONTROL FILLER FINAL FIRST FOOTING FOR FROM
42syn keyword cobolReserved contained GENERATE GIVING GLOBAL GREATER GROUP HEADING HIGH-VALUE HIGH-VALUES I-O
43syn keyword cobolReserved contained I-O-CONTROL IDENTIFICATION IN INDEX INDEXED INDICATE INITIAL INITIALIZE
44syn keyword cobolReserved contained INITIATE INPUT INPUT-OUTPUT INSPECT INSTALLATION INTO IS JUST
45syn keyword cobolReserved contained JUSTIFIED KEY LABEL LAST LEADING LEFT LENGTH LOCK MEMORY
46syn keyword cobolReserved contained MERGE MESSAGE MODE MODULES MOVE MULTIPLE MULTIPLY NATIVE NEGATIVE NEXT NO NOT
47syn keyword cobolReserved contained NUMBER NUMERIC NUMERIC-EDITED OBJECT-COMPUTER OCCURS OF OFF OMITTED ON OPEN
48syn keyword cobolReserved contained OPTIONAL OR ORDER ORGANIZATION OTHER OUTPUT OVERFLOW PACKED-DECIMAL PADDING
49syn keyword cobolReserved contained PAGE PAGE-COUNTER PERFORM PF PH PIC PICTURE PLUS POINTER POSITION POSITIVE
50syn keyword cobolReserved contained PRINTING PROCEDURE PROCEDURES PROCEDD PROGRAM PROGRAM-ID PURGE QUEUE QUOTES
51syn keyword cobolReserved contained RANDOM RD READ RECEIVE RECORD RECORDS REDEFINES REEL REFERENCE REFERENCES
52syn keyword cobolReserved contained RELATIVE RELEASE REMAINDER REMOVAL REPLACE REPLACING REPORT REPORTING
53syn keyword cobolReserved contained REPORTS RERUN RESERVE RESET RETURN RETURNING REVERSED REWIND REWRITE RF RH
54syn keyword cobolReserved contained RIGHT ROUNDED RUN SAME SD SEARCH SECTION SECURITY SEGMENT SEGMENT-LIMITED
55syn keyword cobolReserved contained SELECT SEND SENTENCE SEPARATE SEQUENCE SEQUENTIAL SET SIGN SIZE SORT
56syn keyword cobolReserved contained SORT-MERGE SOURCE SOURCE-COMPUTER SPECIAL-NAMES STANDARD
57syn keyword cobolReserved contained STANDARD-1 STANDARD-2 START STATUS STOP STRING SUB-QUEUE-1 SUB-QUEUE-2
58syn keyword cobolReserved contained SUB-QUEUE-3 SUBTRACT SUM SUPPRESS SYMBOLIC SYNC SYNCHRONIZED TABLE TALLYING
59syn keyword cobolReserved contained TAPE TERMINAL TERMINATE TEST TEXT THAN THEN THROUGH THRU TIME TIMES TO TOP
60syn keyword cobolReserved contained TRAILING TRUE TYPE UNIT UNSTRING UNTIL UP UPON USAGE USE USING VALUE VALUES
61syn keyword cobolReserved contained VARYING WHEN WITH WORDS WORKING-STORAGE WRITE
62syn match cobolReserved contained "\<CONTAINS\>"
63syn match cobolReserved contained "\<\(IF\|INVALID\|END\|EOP\)\>"
64syn match cobolReserved contained "\<ALL\>"
65
66syn keyword cobolConstant SPACE SPACES NULL ZERO ZEROES ZEROS LOW-VALUE LOW-VALUES
67
68syn match cobolMarker "^.\{6\}"
69syn match cobolBadLine "^.\{6\}[^ D\-*$/].*"hs=s+6
70
71" If comment mark somehow gets into column past Column 7.
72syn match cobolBadLine "^.\{6\}\s\+\*.*"
73
74syn match cobolNumber "\<-\=\d*\.\=\d\+\>" contains=cobolMarker,cobolComment
75syn match cobolPic "\<S*9\+\>" contains=cobolMarker,cobolComment
76syn match cobolPic "\<$*\.\=9\+\>" contains=cobolMarker,cobolComment
77syn match cobolPic "\<Z*\.\=9\+\>" contains=cobolMarker,cobolComment
78syn match cobolPic "\<V9\+\>" contains=cobolMarker,cobolComment
79syn match cobolPic "\<9\+V\>" contains=cobolMarker,cobolComment
80syn match cobolPic "\<-\+[Z9]\+\>" contains=cobolMarker,cobolComment
81syn match cobolTodo "todo" contained
82syn match cobolComment "^.\{6\}\*.*"hs=s+6 contains=cobolTodo,cobolMarker
83syn match cobolComment "^.\{6\}/.*"hs=s+6 contains=cobolTodo,cobolMarker
84syn match cobolComment "^.\{6\}C.*"hs=s+6 contains=cobolTodo,cobolMarker
85syn match cobolCompiler "^.\{6\}$.*"hs=s+6
86
87" For MicroFocus or other inline comments, include this line.
88" syn region cobolComment start="*>" end="$" contains=cobolTodo,cobolMarker
89
90syn keyword cobolGoTo GO GOTO
91syn keyword cobolCopy COPY
92
93" cobolBAD: things that are BAD NEWS!
94syn keyword cobolBAD ALTER ENTER RENAMES
95
96" cobolWatch: things that are important when trying to understand a program
97syn keyword cobolWatch OCCURS DEPENDING VARYING BINARY COMP REDEFINES
98syn keyword cobolWatch REPLACING RUN
99syn match cobolWatch "COMP-[123456XN]"
100
101syn keyword cobolEXECs EXEC END-EXEC
102
103
104syn match cobolDecl "^.\{6} \{1,4}\(0\=1\|77\|78\) "hs=s+7,he=e-1 contains=cobolMarker
105syn match cobolDecl "^.\{6} \+[1-4]\d "hs=s+7,he=e-1 contains=cobolMarker
106syn match cobolDecl "^.\{6} \+0\=[2-9] "hs=s+7,he=e-1 contains=cobolMarker
107syn match cobolDecl "^.\{6} \+66 "hs=s+7,he=e-1 contains=cobolMarker
108
109syn match cobolWatch "^.\{6} \+88 "hs=s+7,he=e-1 contains=cobolMarker
110
111syn match cobolBadID "\k\+-\($\|[^-A-Z0-9]\)"
112
113syn keyword cobolCALLs CALL CANCEL GOBACK PERFORM INVOKE
114syn match cobolCALLs "EXIT \+PROGRAM"
115syn match cobolExtras /\<VALUE \+\d\+\./hs=s+6,he=e-1
116
117syn match cobolString /"[^"]*\("\|$\)/
118syn match cobolString /'[^']*\('\|$\)/
119
120syn region cobolLine start="^.\{6} " end="$" contains=ALL
121
122if exists("cobol_legacy_code")
123syn region cobolCondFlow contains=ALLBUT,cobolLine start="\<\(IF\|INVALID\|END\|EOP\)\>" skip=/\('\|"\)[^"]\{-}\("\|'\|$\)/ end="\." keepend
124endif
125
126if ! exists("cobol_legacy_code")
127 " catch junk in columns 1-6 for modern code
128 syn match cobolBAD "^ \{0,5\}[^ ].*"
129endif
130
131" many legacy sources have junk in columns 1-6: must be before others
132" Stuff after column 72 is in error - must be after all other "match" entries
133if exists("cobol_legacy_code")
134 syn match cobolBadLine "^.\{6}[^*/].\{66,\}"
135else
136 syn match cobolBadLine "^.\{6}.\{67,\}"
137endif
138
139" Define the default highlighting.
140" For version 5.7 and earlier: only when not done already
141" For version 5.8 and later: only when an item doesn't have highlighting yet
142if version >= 508 || !exists("did_cobol_syntax_inits")
143 if version < 508
144 let did_cobol_syntax_inits = 1
145 command -nargs=+ HiLink hi link <args>
146 else
147 command -nargs=+ HiLink hi def link <args>
148 endif
149
150 HiLink cobolBAD Error
151 HiLink cobolBadID Error
152 HiLink cobolBadLine Error
153 HiLink cobolMarker Comment
154 HiLink cobolCALLs Function
155 HiLink cobolComment Comment
156 HiLink cobolKeys Comment
157 HiLink cobolAreaB Special
158 HiLink cobolCompiler PreProc
159 HiLink cobolCondFlow Special
160 HiLink cobolCopy PreProc
161 HiLink cobolDecl Type
162 HiLink cobolExtras Special
163 HiLink cobolGoTo Special
164 HiLink cobolConstant Constant
165 HiLink cobolNumber Constant
166 HiLink cobolPic Constant
167 HiLink cobolReserved Statement
168 HiLink cobolString Constant
169 HiLink cobolTodo Todo
170 HiLink cobolWatch Special
171
172 delcommand HiLink
173endif
174
175let b:current_syntax = "cobol"
176
177" vim: ts=6 nowrap