209 lines · 10.1 KB · Text
RawDownload
" Vim syntax file" Language:   COBOL" Maintainer: Tim Pope <vimNOSPAM@tpope.info>"     (formerly Davyd Ondrejko <vondraco@columbus.rr.com>)"     (formerly Sitaram Chamarty <sitaram@diac.com> and"		    James Mitchell <james_mitchell@acm.org>)" $Id: cobol.vim,v 1.2 2007/05/05 18:23:43 vimboss Exp $ " For version 5.x: Clear all syntax items" For version 6.x: Quit when a syntax file was already loadedif version < 600  syntax clearelseif exists("b:current_syntax")  finishendif " MOST important - else most of the keywords wont work!if version < 600  set isk=@,48-57,-else  setlocal isk=@,48-57,-endif syn case ignore syn cluster cobolStart      contains=cobolAreaA,cobolAreaB,cobolComment,cobolCompilersyn cluster cobolAreaA      contains=cobolParagraph,cobolSection,cobolDivision"syn cluster cobolAreaB      contains=syn cluster cobolAreaAB     contains=cobolLinesyn cluster cobolLine       contains=cobolReservedsyn match   cobolMarker     "^\%( \{,5\}[^ ]\)\@=.\{,6}" nextgroup=@cobolStartsyn match   cobolSpace      "^ \{6\}"  nextgroup=@cobolStartsyn match   cobolAreaA      " \{1,4\}"  contained nextgroup=@cobolAreaA,@cobolAreaABsyn match   cobolAreaB      " \{5,\}\|- *" contained nextgroup=@cobolAreaB,@cobolAreaABsyn match   cobolComment    "[/*C].*$" containedsyn match   cobolCompiler   "$.*$"     containedsyn match   cobolLine       ".*$"      contained contains=cobolReserved,@cobolLine syn match   cobolDivision       "[A-Z][A-Z0-9-]*[A-Z0-9]\s\+DIVISION\."he=e-1 contained contains=cobolDivisionNamesyn keyword cobolDivisionName   contained IDENTIFICATION ENVIRONMENT DATA PROCEDUREsyn match   cobolSection        "[A-Z][A-Z0-9-]*[A-Z0-9]\s\+SECTION\."he=e-1  contained contains=cobolSectionNamesyn keyword cobolSectionName    contained CONFIGURATION INPUT-OUTPUT FILE WORKING-STORAGE LOCAL-STORAGE LINKAGEsyn match   cobolParagraph      "\a[A-Z0-9-]*[A-Z0-9]\.\|\d[A-Z0-9-]*[A-Z]\."he=e-1             contained contains=cobolParagraphNamesyn keyword cobolParagraphName  contained PROGRAM-ID SOURCE-COMPUTER OBJECT-COMPUTER SPECIAL-NAMES FILE-CONTROL I-O-CONTROL  "syn match cobolKeys "^\a\{1,6\}" contains=cobolReservedsyn keyword cobolReserved contained ACCEPT ACCESS ADD ADDRESS ADVANCING AFTER ALPHABET ALPHABETICsyn keyword cobolReserved contained ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED ALSsyn keyword cobolReserved contained ALTERNATE AND ANY ARE AREA AREAS ASCENDING ASSIGN AT AUTHOR BEFORE BINARYsyn keyword cobolReserved contained BLANK BLOCK BOTTOM BY CANCEL CBLL CD CF CH CHARACTER CHARACTERS CLASSsyn keyword cobolReserved contained CLOCK-UNITS CLOSE COBOL CODE CODE-SET COLLATING COLUMN COMMA COMMONsyn keyword cobolReserved contained COMMUNICATIONS COMPUTATIONAL COMPUTE CONTENT CONTINUEsyn keyword cobolReserved contained CONTROL CONVERTING CORR CORRESPONDING COUNT CURRENCY DATE DATE-COMPILEDsyn keyword cobolReserved contained DATE-WRITTEN DAY DAY-OF-WEEK DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINEsyn keyword cobolReserved contained DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING DECIMAL-POINTsyn keyword cobolReserved contained DELARATIVES DELETE DELIMITED DELIMITER DEPENDING DESCENDING DESTINATIONsyn keyword cobolReserved contained DETAIL DISABLE DISPLAY DIVIDE DIVISION DOWN DUPLICATES DYNAMIC EGI ELSE EMIsyn keyword cobolReserved contained ENABLE END-ADD END-COMPUTE END-DELETE END-DIVIDE END-EVALUATE END-IFsyn keyword cobolReserved contained END-MULTIPLY END-OF-PAGE END-READ END-RECEIVE END-RETURNsyn keyword cobolReserved contained END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT END-UNSTRINGsyn keyword cobolReserved contained END-WRITE EQUAL ERROR ESI EVALUATE EVERY EXCEPTION EXITsyn keyword cobolReserved contained EXTEND EXTERNAL FALSE FD FILLER FINAL FIRST FOOTING FOR FROMsyn keyword cobolReserved contained GENERATE GIVING GLOBAL GREATER GROUP HEADING HIGH-VALUE HIGH-VALUES I-Osyn keyword cobolReserved contained IN INDEX INDEXED INDICATE INITIAL INITIALIZEsyn keyword cobolReserved contained INITIATE INPUT INSPECT INSTALLATION INTO IS JUSTsyn keyword cobolReserved contained JUSTIFIED KEY LABEL LAST LEADING LEFT LENGTH LOCK MEMORYsyn keyword cobolReserved contained MERGE MESSAGE MODE MODULES MOVE MULTIPLE MULTIPLY NATIVE NEGATIVE NEXT NO NOTsyn keyword cobolReserved contained NUMBER NUMERIC NUMERIC-EDITED OCCURS OF OFF OMITTED ON OPENsyn keyword cobolReserved contained OPTIONAL OR ORDER ORGANIZATION OTHER OUTPUT OVERFLOW PACKED-DECIMAL PADDINGsyn keyword cobolReserved contained PAGE PAGE-COUNTER PERFORM PF PH PIC PICTURE PLUS POINTER POSITION POSITIVEsyn keyword cobolReserved contained PRINTING PROCEDURES PROCEDD PROGRAM PURGE QUEUE QUOTESsyn keyword cobolReserved contained RANDOM RD READ RECEIVE RECORD RECORDS REDEFINES REEL REFERENCE REFERENCESsyn keyword cobolReserved contained RELATIVE RELEASE REMAINDER REMOVAL REPLACE REPLACING REPORT REPORTINGsyn keyword cobolReserved contained REPORTS RERUN RESERVE RESET RETURN RETURNING REVERSED REWIND REWRITE RF RHsyn keyword cobolReserved contained RIGHT ROUNDED RUN SAME SD SEARCH SECTION SECURITY SEGMENT SEGMENT-LIMITEDsyn keyword cobolReserved contained SELECT SEND SENTENCE SEPARATE SEQUENCE SEQUENTIAL SET SIGN SIZE SORTsyn keyword cobolReserved contained SORT-MERGE SOURCE STANDARDsyn keyword cobolReserved contained STANDARD-1 STANDARD-2 START STATUS STOP STRING SUB-QUEUE-1 SUB-QUEUE-2syn keyword cobolReserved contained SUB-QUEUE-3 SUBTRACT SUM SUPPRESS SYMBOLIC SYNC SYNCHRONIZED TABLE TALLYINGsyn keyword cobolReserved contained TAPE TERMINAL TERMINATE TEST TEXT THAN THEN THROUGH THRU TIME TIMES TO TOPsyn keyword cobolReserved contained TRAILING TRUE TYPE UNIT UNSTRING UNTIL UP UPON USAGE USE USING VALUE VALUESsyn keyword cobolReserved contained VARYING WHEN WITH WORDS WRITEsyn match   cobolReserved contained "\<CONTAINS\>"syn match   cobolReserved contained "\<\(IF\|INVALID\|END\|EOP\)\>"syn match   cobolReserved contained "\<ALL\>" syn cluster cobolLine     add=cobolConstant,cobolNumber,cobolPicsyn keyword cobolConstant SPACE SPACES NULL ZERO ZEROES ZEROS LOW-VALUE LOW-VALUES syn match   cobolNumber       "\<-\=\d*\.\=\d\+\>" containedsyn match   cobolPic		"\<S*9\+\>" containedsyn match   cobolPic		"\<$*\.\=9\+\>" containedsyn match   cobolPic		"\<Z*\.\=9\+\>" containedsyn match   cobolPic		"\<V9\+\>" containedsyn match   cobolPic		"\<9\+V\>" containedsyn match   cobolPic		"\<-\+[Z9]\+\>" containedsyn match   cobolTodo		"todo" contained containedin=cobolComment " For MicroFocus or other inline comments, include this line." syn region  cobolComment      start="*>" end="$" contains=cobolTodo,cobolMarker syn match   cobolBadLine      "[^ D\*$/-].*" contained" If comment mark somehow gets into column past Column 7.syn match   cobolBadLine      "\s\+\*.*" containedsyn cluster cobolStart        add=cobolBadLine  syn keyword cobolGoTo		GO GOTOsyn keyword cobolCopy		COPY " cobolBAD: things that are BAD NEWS!syn keyword cobolBAD		ALTER ENTER RENAMES syn cluster cobolLine       add=cobolGoTo,cobolCopy,cobolBAD,cobolWatch,cobolEXECs " cobolWatch: things that are important when trying to understand a programsyn keyword cobolWatch		OCCURS DEPENDING VARYING BINARY COMP REDEFINESsyn keyword cobolWatch		REPLACING RUNsyn match   cobolWatch		"COMP-[123456XN]" syn keyword cobolEXECs		EXEC END-EXEC  syn cluster cobolAreaA      add=cobolDeclAsyn cluster cobolAreaAB     add=cobolDeclsyn match   cobolDeclA      "\(0\=1\|77\|78\) " contained nextgroup=cobolLinesyn match   cobolDecl		"[1-4]\d " contained nextgroup=cobolLinesyn match   cobolDecl		"0\=[2-9] " contained nextgroup=cobolLinesyn match   cobolDecl		"66 " contained nextgroup=cobolLine syn match   cobolWatch		"88 " contained nextgroup=cobolLine "syn match   cobolBadID		"\k\+-\($\|[^-A-Z0-9]\)" contained syn cluster cobolLine       add=cobolCALLs,cobolString,cobolCondFlowsyn keyword cobolCALLs		CALL END-CALL CANCEL GOBACK PERFORM END-PERFORM INVOKEsyn match   cobolCALLs		"EXIT \+PROGRAM"syn match   cobolExtras       /\<VALUE \+\d\+\./hs=s+6,he=e-1 syn match   cobolString       /"[^"]*\("\|$\)/syn match   cobolString       /'[^']*\('\|$\)/ "syn region  cobolLine        start="^.\{6}[ D-]" end="$" contains=ALLsyn match   cobolIndicator   "\%7c[D-]" contained if exists("cobol_legacy_code")  syn region  cobolCondFlow     contains=ALLBUT,cobolLine start="\<\(IF\|INVALID\|END\|EOP\)\>" skip=/\('\|"\)[^"]\{-}\("\|'\|$\)/ end="\." keependendif " many legacy sources have junk in columns 1-6: must be before others" Stuff after column 72 is in error - must be after all other "match" entriesif exists("cobol_legacy_code")    syn match   cobolBadLine      "\%73c.*" containedin=ALLBUT,cobolCommentelse    syn match   cobolBadLine      "\%73c.*" containedin=ALLendif " Define the default highlighting." For version 5.7 and earlier: only when not done already" For version 5.8 and later: only when an item doesn't have highlighting yetif version >= 508 || !exists("did_cobol_syntax_inits")  if version < 508    let did_cobol_syntax_inits = 1    command -nargs=+ HiLink hi link <args>  else    command -nargs=+ HiLink hi def link <args>  endif   HiLink cobolBAD      Error  HiLink cobolBadID    Error  HiLink cobolBadLine  Error  if exists("g:cobol_legacy_code")      HiLink cobolMarker   Comment  else      HiLink cobolMarker   Error  endif  HiLink cobolCALLs    Function  HiLink cobolComment  Comment  HiLink cobolKeys     Comment  HiLink cobolAreaB    Special  HiLink cobolCompiler PreProc  HiLink cobolCondFlow Special  HiLink cobolCopy     PreProc  HiLink cobolDeclA    cobolDecl  HiLink cobolDecl     Type  HiLink cobolExtras   Special  HiLink cobolGoTo     Special  HiLink cobolConstant Constant  HiLink cobolNumber   Constant  HiLink cobolPic      Constant  HiLink cobolReserved Statement  HiLink cobolDivision Label  HiLink cobolSection  Label  HiLink cobolParagraph Label  HiLink cobolDivisionName  Keyword  HiLink cobolSectionName   Keyword  HiLink cobolParagraphName Keyword  HiLink cobolString   Constant  HiLink cobolTodo     Todo  HiLink cobolWatch    Special  HiLink cobolIndicator Special   delcommand HiLinkendif let b:current_syntax = "cobol" " vim: ts=6 nowrap