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