summaryrefslogtreecommitdiff
path: root/runtime/syntax/sas.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/sas.vim')
-rw-r--r--runtime/syntax/sas.vim236
1 files changed, 236 insertions, 0 deletions
diff --git a/runtime/syntax/sas.vim b/runtime/syntax/sas.vim
new file mode 100644
index 000000000..68e8788e2
--- /dev/null
+++ b/runtime/syntax/sas.vim
@@ -0,0 +1,236 @@
+" Vim syntax file
+" Language: SAS
+" Maintainer: James Kidd <james.kidd@covance.com>
+" Last Change: 02 Jun 2003
+" Added highlighting for additional keywords and such;
+" Attempted to match SAS default syntax colors;
+" Changed syncing so it doesn't lose colors on large blocks;
+" Much thanks to Bob Heckel for knowledgeable tweaking.
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syn case ignore
+
+syn region sasString start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn region sasString start=+'+ skip=+\\\\\|\\"+ end=+'+
+
+" Want region from 'cards;' to ';' to be captured (Bob Heckel)
+syn region sasCards start="^\s*CARDS.*" end="^\s*;\s*$"
+syn region sasCards start="^\s*DATALINES.*" end="^\s*;\s*$"
+
+syn match sasNumber "-\=\<\d*\.\=[0-9_]\>"
+
+syn region sasComment start="/\*" end="\*/" contains=sasTodo
+" Ignore misleading //JCL SYNTAX... (Bob Heckel)
+syn region sasComment start="[^/][^/]/\*" end="\*/" contains=sasTodo
+
+" Allow highlighting of embedded TODOs (Bob Heckel)
+syn match sasComment "^\s*\*.*;" contains=sasTodo
+
+" Allow highlighting of embedded TODOs (Bob Heckel)
+syn match sasComment ";\s*\*.*;"hs=s+1 contains=sasTodo
+
+" Handle macro comments too (Bob Heckel).
+syn match sasComment "^\s*%*\*.*;" contains=sasTodo
+
+" This line defines macro variables in code. HiLink at end of file
+" defines the color scheme. Begin region with ampersand and end with
+" any non-word character offset by -1; put ampersand in the skip list
+" just in case it is used to concatenate macro variable values.
+
+" Thanks to ronald höllwarth for this fix to an intra-versioning
+" problem with this little feature
+
+if version < 600
+ syn region sasMacroVar start="\&" skip="[_&]" end="\W"he=e-1
+else " for the older Vim's just do it their way ...
+ syn region sasMacroVar start="&" skip="[_&]" end="\W"he=e-1
+endif
+
+
+" I dont think specific PROCs need to be listed if use this line (Bob Heckel).
+syn match sasProc "^\s*PROC \w\+"
+syn keyword sasStep RUN QUIT DATA
+
+
+" Base SAS Procs - version 8.1
+
+syn keyword sasConditional DO ELSE END IF THEN UNTIL WHILE
+
+syn keyword sasStatement ABORT ARRAY ATTRIB BY CALL CARDS CARDS4 CATNAME
+syn keyword sasStatement CONTINUE DATALINES DATALINES4 DELETE DISPLAY
+syn keyword sasStatement DM DROP ENDSAS ERROR FILE FILENAME FOOTNOTE
+syn keyword sasStatement FORMAT GOTO INFILE INFORMAT INPUT KEEP
+syn keyword sasStatement LABEL LEAVE LENGTH LIBNAME LINK LIST LOSTCARD
+syn keyword sasStatement MERGE MISSING MODIFY OPTIONS OUTPUT PAGE
+syn keyword sasStatement PUT REDIRECT REMOVE RENAME REPLACE RETAIN
+syn keyword sasStatement RETURN SELECT SET SKIP STARTSAS STOP TITLE
+syn keyword sasStatement UPDATE WAITSAS WHERE WINDOW X SYSTASK
+
+" Keywords that are used in Proc SQL
+" I left them as statements because SAS's enhanced editor highlights
+" them the same as normal statements used in data steps (Jim Kidd)
+
+syn keyword sasStatement ADD AND ALTER AS CASCADE CHECK CREATE
+syn keyword sasStatement DELETE DESCRIBE DISTINCT DROP FOREIGN
+syn keyword sasStatement FROM GROUP HAVING INDEX INSERT INTO IN
+syn keyword sasStatement KEY LIKE MESSAGE MODIFY MSGTYPE NOT
+syn keyword sasStatement NULL ON OR ORDER PRIMARY REFERENCES
+syn keyword sasStatement RESET RESTRICT SELECT SET TABLE
+syn keyword sasStatement UNIQUE UPDATE VALIDATE VIEW WHERE
+
+
+syn match sasStatement "FOOTNOTE\d" "TITLE\d"
+
+syn match sasMacro "%BQUOTE" "%NRBQUOTE" "%CMPRES" "%QCMPRES"
+syn match sasMacro "%COMPSTOR" "%DATATYP" "%DISPLAY" "%DO"
+syn match sasMacro "%ELSE" "%END" "%EVAL" "%GLOBAL"
+syn match sasMacro "%GOTO" "%IF" "%INDEX" "%INPUT"
+syn match sasMacro "%KEYDEF" "%LABEL" "%LEFT" "%LENGTH"
+syn match sasMacro "%LET" "%LOCAL" "%LOWCASE" "%MACRO"
+syn match sasMacro "%MEND" "%NRBQUOTE" "%NRQUOTE" "%NRSTR"
+syn match sasMacro "%PUT" "%QCMPRES" "%QLEFT" "%QLOWCASE"
+syn match sasMacro "%QSCAN" "%QSUBSTR" "%QSYSFUNC" "%QTRIM"
+syn match sasMacro "%QUOTE" "%QUPCASE" "%SCAN" "%STR"
+syn match sasMacro "%SUBSTR" "%SUPERQ" "%SYSCALL" "%SYSEVALF"
+syn match sasMacro "%SYSEXEC" "%SYSFUNC" "%SYSGET" "%SYSLPUT"
+syn match sasMacro "%SYSPROD" "%SYSRC" "%SYSRPUT" "%THEN"
+syn match sasMacro "%TO" "%TRIM" "%UNQUOTE" "%UNTIL"
+syn match sasMacro "%UPCASE" "%VERIFY" "%WHILE" "%WINDOW"
+
+" SAS Functions
+
+syn keyword sasFunction ABS ADDR AIRY ARCOS ARSIN ATAN ATTRC ATTRN
+syn keyword sasFunction BAND BETAINV BLSHIFT BNOT BOR BRSHIFT BXOR
+syn keyword sasFunction BYTE CDF CEIL CEXIST CINV CLOSE CNONCT COLLATE
+syn keyword sasFunction COMPBL COMPOUND COMPRESS COS COSH CSS CUROBS
+syn keyword sasFunction CV DACCDB DACCDBSL DACCSL DACCSYD DACCTAB
+syn keyword sasFunction DAIRY DATE DATEJUL DATEPART DATETIME DAY
+syn keyword sasFunction DCLOSE DEPDB DEPDBSL DEPDBSL DEPSL DEPSL
+syn keyword sasFunction DEPSYD DEPSYD DEPTAB DEPTAB DEQUOTE DHMS
+syn keyword sasFunction DIF DIGAMMA DIM DINFO DNUM DOPEN DOPTNAME
+syn keyword sasFunction DOPTNUM DREAD DROPNOTE DSNAME ERF ERFC EXIST
+syn keyword sasFunction EXP FAPPEND FCLOSE FCOL FDELETE FETCH FETCHOBS
+syn keyword sasFunction FEXIST FGET FILEEXIST FILENAME FILEREF FINFO
+syn keyword sasFunction FINV FIPNAME FIPNAMEL FIPSTATE FLOOR FNONCT
+syn keyword sasFunction FNOTE FOPEN FOPTNAME FOPTNUM FPOINT FPOS
+syn keyword sasFunction FPUT FREAD FREWIND FRLEN FSEP FUZZ FWRITE
+syn keyword sasFunction GAMINV GAMMA GETOPTION GETVARC GETVARN HBOUND
+syn keyword sasFunction HMS HOSTHELP HOUR IBESSEL INDEX INDEXC
+syn keyword sasFunction INDEXW INPUT INPUTC INPUTN INT INTCK INTNX
+syn keyword sasFunction INTRR IRR JBESSEL JULDATE KURTOSIS LAG LBOUND
+syn keyword sasFunction LEFT LENGTH LGAMMA LIBNAME LIBREF LOG LOG10
+syn keyword sasFunction LOG2 LOGPDF LOGPMF LOGSDF LOWCASE MAX MDY
+syn keyword sasFunction MEAN MIN MINUTE MOD MONTH MOPEN MORT N
+syn keyword sasFunction NETPV NMISS NORMAL NOTE NPV OPEN ORDINAL
+syn keyword sasFunction PATHNAME PDF PEEK PEEKC PMF POINT POISSON POKE
+syn keyword sasFunction PROBBETA PROBBNML PROBCHI PROBF PROBGAM
+syn keyword sasFunction PROBHYPR PROBIT PROBNEGB PROBNORM PROBT PUT
+syn keyword sasFunction PUTC PUTN QTR QUOTE RANBIN RANCAU RANEXP
+syn keyword sasFunction RANGAM RANGE RANK RANNOR RANPOI RANTBL RANTRI
+syn keyword sasFunction RANUNI REPEAT RESOLVE REVERSE REWIND RIGHT
+syn keyword sasFunction ROUND SAVING SCAN SDF SECOND SIGN SIN SINH
+syn keyword sasFunction SKEWNESS SOUNDEX SPEDIS SQRT STD STDERR STFIPS
+syn keyword sasFunction STNAME STNAMEL SUBSTR SUM SYMGET SYSGET SYSMSG
+syn keyword sasFunction SYSPROD SYSRC SYSTEM TAN TANH TIME TIMEPART
+syn keyword sasFunction TINV TNONCT TODAY TRANSLATE TRANWRD TRIGAMMA
+syn keyword sasFunction TRIM TRIMN TRUNC UNIFORM UPCASE USS VAR
+syn keyword sasFunction VARFMT VARINFMT VARLABEL VARLEN VARNAME
+syn keyword sasFunction VARNUM VARRAY VARRAYX VARTYPE VERIFY VFORMAT
+syn keyword sasFunction VFORMATD VFORMATDX VFORMATN VFORMATNX VFORMATW
+syn keyword sasFunction VFORMATWX VFORMATX VINARRAY VINARRAYX VINFORMAT
+syn keyword sasFunction VINFORMATD VINFORMATDX VINFORMATN VINFORMATNX
+syn keyword sasFunction VINFORMATW VINFORMATWX VINFORMATX VLABEL
+syn keyword sasFunction VLABELX VLENGTH VLENGTHX VNAME VNAMEX VTYPE
+syn keyword sasFunction VTYPEX WEEKDAY YEAR YYQ ZIPFIPS ZIPNAME ZIPNAMEL
+syn keyword sasFunction ZIPSTATE
+
+" Handy settings for using vim with log files
+syn keyword sasLogMsg NOTE
+syn keyword sasWarnMsg WARNING
+syn keyword sasErrMsg ERROR
+
+" Always contained in a comment (Bob Heckel)
+syn keyword sasTodo TODO TBD FIXME contained
+
+" These don't fit anywhere else (Bob Heckel).
+syn match sasUnderscore "_NULL_"
+syn match sasUnderscore "_INFILE_"
+syn match sasUnderscore "_N_"
+syn match sasUnderscore "_WEBOUT_"
+syn match sasUnderscore "_NUMERIC_"
+syn match sasUnderscore "_CHARACTER_"
+syn match sasUnderscore "_ALL_"
+
+" End of SAS Functions
+
+" 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 yet
+
+if version >= 508 || !exists("did_sas_syntax_inits")
+ if version < 508
+ let did_sas_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ " Default sas enhanced editor color syntax
+ hi sComment term=bold cterm=NONE ctermfg=Green ctermbg=Black gui=NONE guifg=DarkGreen guibg=White
+ hi sCard term=bold cterm=NONE ctermfg=Black ctermbg=Yellow gui=NONE guifg=Black guibg=LightYellow
+ hi sDate_Time term=NONE cterm=bold ctermfg=Green ctermbg=Black gui=bold guifg=SeaGreen guibg=White
+ hi sKeyword term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=NONE guifg=Blue guibg=White
+ hi sFmtInfmt term=NONE cterm=NONE ctermfg=LightGreen ctermbg=Black gui=NONE guifg=SeaGreen guibg=White
+ hi sString term=NONE cterm=NONE ctermfg=Magenta ctermbg=Black gui=NONE guifg=Purple guibg=White
+ hi sText term=NONE cterm=NONE ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White
+ hi sNumber term=NONE cterm=bold ctermfg=Green ctermbg=Black gui=bold guifg=SeaGreen guibg=White
+ hi sProc term=NONE cterm=bold ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White
+ hi sSection term=NONE cterm=bold ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White
+ hi mDefine term=NONE cterm=bold ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White
+ hi mKeyword term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=NONE guifg=Blue guibg=White
+ hi mReference term=NONE cterm=bold ctermfg=White ctermbg=Black gui=bold guifg=Blue guibg=White
+ hi mSection term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White
+ hi mText term=NONE cterm=NONE ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White
+
+" Colors that closely match SAS log colors for default color scheme
+ hi lError term=NONE cterm=NONE ctermfg=Red ctermbg=Black gui=none guifg=Red guibg=White
+ hi lWarning term=NONE cterm=NONE ctermfg=Green ctermbg=Black gui=none guifg=Green guibg=White
+ hi lNote term=NONE cterm=NONE ctermfg=Cyan ctermbg=Black gui=none guifg=Blue guibg=White
+
+
+ " Special hilighting for the SAS proc section
+
+ HiLink sasComment sComment
+ HiLink sasConditional sKeyword
+ HiLink sasStep sSection
+ HiLink sasFunction sKeyword
+ HiLink sasMacro mKeyword
+ HiLink sasMacroVar NonText
+ HiLink sasNumber sNumber
+ HiLink sasStatement sKeyword
+ HiLink sasString sString
+ HiLink sasProc sProc
+ " (Bob Heckel)
+ HiLink sasTodo Todo
+ HiLink sasErrMsg lError
+ HiLink sasWarnMsg lWarning
+ HiLink sasLogMsg lNote
+ HiLink sasCards sCard
+ " (Bob Heckel)
+ HiLink sasUnderscore PreProc
+ delcommand HiLink
+endif
+
+" Syncronize from beginning to keep large blocks from losing
+" syntax coloring while moving through code.
+syn sync fromstart
+
+let b:current_syntax = "sas"
+
+" vim: ts=8