diff --git a/runtime/indent/sas.vim b/runtime/indent/sas.vim
index d591b27..9cc9e02 100644
--- a/runtime/indent/sas.vim
+++ b/runtime/indent/sas.vim
@@ -1,8 +1,8 @@
 " Vim indent file
 " Language:     SAS
 " Maintainer:   Zhen-Huan Hu <wildkeny@gmail.com>
-" Version:      3.0.1
-" Last Change:  Mar 13, 2017
+" Version:      3.0.3
+" Last Change:  Jun 26, 2018
 
 if exists("b:did_indent")
   finish
@@ -27,9 +27,9 @@
 let s:section_end = '\v%(^|;)\s*%(quit|enddata)\s*;'
 
 " Regex that captures the start of a control block (anything inside a section)
-let s:block_str = '\v<%(do>%([^;]+<%(to|over)>[^;]+)=|%(define|layout|method|select)>[^;]+|begingraph)\s*;'
+let s:block_str = '\v<%(do>%([^;]+<%(to|over|while)>[^;]+)=|%(compute|define\s+%(column|footer|header|style|table|tagset|crosstabs|statgraph)|edit|layout|method|select)>[^;]+|begingraph)\s*;'
 " Regex that captures the end of a control block (anything inside a section)
-let s:block_end = '\v<%(end|endlayout|endgraph)\s*;'
+let s:block_end = '\v<%(end|endcomp|endlayout|endgraph)\s*;'
 
 " Regex that captures the start of a macro
 let s:macro_str = '\v%(^|;)\s*\%macro>'
@@ -52,7 +52,7 @@
   let prev_lnum = prevnonblank(a:lnum - 1)
   while prev_lnum > 0
     let prev_line = getline(prev_lnum)
-    if prev_line =~ a:regex
+    if prev_line =~? a:regex
       break
     else
       let prev_lnum = prevnonblank(prev_lnum - 1)
@@ -71,11 +71,11 @@
     let prev_line = getline(prev_lnum)
     " Previous non-blank line contains the start of a macro/section/block
     " while not the end of a macro/section/block (at the same line)
-    if (prev_line =~ s:section_str && prev_line !~ s:section_run && prev_line !~ s:section_end) ||
-          \ (prev_line =~ s:block_str && prev_line !~ s:block_end) ||
-          \ (prev_line =~ s:macro_str && prev_line !~ s:macro_end)
-      let ind = indent(prev_lnum) + &sts
-    elseif prev_line =~ s:section_run && prev_line !~ s:section_end
+    if (prev_line =~? s:section_str && prev_line !~? s:section_run && prev_line !~? s:section_end) ||
+          \ (prev_line =~? s:block_str && prev_line !~? s:block_end) ||
+          \ (prev_line =~? s:macro_str && prev_line !~? s:macro_end)
+      let ind = indent(prev_lnum) + shiftwidth()
+    elseif prev_line =~? s:section_run && prev_line !~? s:section_end
       let prev_section_str_lnum = s:PrevMatch(v:lnum, s:section_str)
       let prev_section_end_lnum = max([
             \ s:PrevMatch(v:lnum, s:section_end),
@@ -83,9 +83,9 @@
             \ s:PrevMatch(v:lnum, s:program_end)])
       " Check if the section supports run-processing
       if prev_section_end_lnum < prev_section_str_lnum &&
-            \ getline(prev_section_str_lnum) =~ '\v%(^|;)\s*proc\s+%(' .
+            \ getline(prev_section_str_lnum) =~? '\v%(^|;)\s*proc\s+%(' .
             \ join(s:run_processing_procs, '|') . ')>'
-        let ind = indent(prev_lnum) + &sts
+        let ind = indent(prev_lnum) + shiftwidth()
       else
         let ind = indent(prev_lnum)
       endif
@@ -95,26 +95,26 @@
   endif
   " Re-adjustments based on the inputs of the current line
   let curr_line = getline(v:lnum)
-  if curr_line =~ s:program_end
+  if curr_line =~? s:program_end
     " End of the program
     " Same indentation as the first non-blank line
     return indent(nextnonblank(1))
-  elseif curr_line =~ s:macro_end
+  elseif curr_line =~? s:macro_end
     " Current line is the end of a macro
     " Match the indentation of the start of the macro
     return indent(s:PrevMatch(v:lnum, s:macro_str))
-  elseif curr_line =~ s:block_end && curr_line !~ s:block_str
+  elseif curr_line =~? s:block_end && curr_line !~? s:block_str
     " Re-adjust if current line is the end of a block
     " while not the beginning of a block (at the same line)
     " Returning the indent of previous block start directly
     " would not work due to nesting
-    let ind = ind - &sts
-  elseif curr_line =~ s:section_str || curr_line =~ s:section_run || curr_line =~ s:section_end
+    let ind = ind - shiftwidth()
+  elseif curr_line =~? s:section_str || curr_line =~? s:section_run || curr_line =~? s:section_end
     " Re-adjust if current line is the start/end of a section
     " since the end of a section could be inexplicit
     let prev_section_str_lnum = s:PrevMatch(v:lnum, s:section_str)
     " Check if the previous section supports run-processing
-    if getline(prev_section_str_lnum) =~ '\v%(^|;)\s*proc\s+%(' .
+    if getline(prev_section_str_lnum) =~? '\v%(^|;)\s*proc\s+%(' .
           \ join(s:run_processing_procs, '|') . ')>'
       let prev_section_end_lnum = max([
             \ s:PrevMatch(v:lnum, s:section_end),
@@ -128,7 +128,7 @@
             \ s:PrevMatch(v:lnum, s:program_end)])
     endif
     if prev_section_end_lnum < prev_section_str_lnum
-      let ind = ind - &sts
+      let ind = ind - shiftwidth()
     endif
   endif
   return ind
