xref: /vim-8.2.3635/runtime/syntax/cobol.vim (revision 0fa313a7)
1" Vim syntax file
2" Language: COBOL
3" Maintainers:  Davyd Ondrejko <[email protected]>
4"     (formerly Sitaram Chamarty <[email protected]> and
5"		    James Mitchell <[email protected]>)
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
178