1<?php
2/*************************************************************************************
3 * cobol.php
4 * ----------
5 * Author: BenBE (BenBE@omorphia.org)
6 * Copyright: (c) 2007-2008 BenBE (http://www.omorphia.de/)
7 * Release Version: 1.0.9.1
8 * Date Started: 2007/07/02
9 *
10 * COBOL language file for GeSHi.
11 *
12 * Most of the compiler directives, reserved words and intrinsic functions are
13 * from the 2009 COBOL Draft Standard, Micro Focus, and GNU Cobol. The lists of
14 * these were found in the draft standard (Sections 8.9, 8.10, 8.11 and 8.12),
15 * Micro Focus' COBOL Language Reference and the GNU Cobol FAQ.
16 *
17 * CHANGES
18 * -------
19 * 2013/11/17 (1.0.8.13)
20 *  -  Changed compiler directives to be handled like comments.
21 *  -  Fixed bug where keywords in identifiers were highlighted.
22 * 2013/08/19 (1.0.8.13)
23 *  -  Added more intrinsic functions, reserved words, and compiler directives
24 *     from the (upcoming) standard.
25 * 2013/07/07 (1.0.8.13)
26 *  -  Added more reserved words, compiler directives and intrinsic functions.
27 *  -  Added modern comment syntax and corrected the other one.
28 *  -  Set OOLANG to true and added an object splitter.
29 *  -  Added extra symbols.
30 *  -  Fixed bug where scope terminators were only the statement in
31 *     end-statement was highlighted.
32 *
33 * TODO (updated 2013/11/17)
34 * -------------------------
35 *
36 *************************************************************************************
37 *
38 *     This file is part of GeSHi.
39 *
40 *   GeSHi is free software; you can redistribute it and/or modify
41 *   it under the terms of the GNU General Public License as published by
42 *   the Free Software Foundation; either version 2 of the License, or
43 *   (at your option) any later version.
44 *
45 *   GeSHi is distributed in the hope that it will be useful,
46 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
47 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
48 *   GNU General Public License for more details.
49 *
50 *   You should have received a copy of the GNU General Public License
51 *   along with GeSHi; if not, write to the Free Software
52 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
53 *
54 ************************************************************************************/
55
56$language_data = array (
57    'LANG_NAME' => 'COBOL',
58    'COMMENT_SINGLE' => array(
59        1 => '*>', // COBOL 2002 inline comment
60        2 => '>>'  // COBOL compiler directive indicator
61        ),
62    'COMMENT_MULTI' => array(),
63    'COMMENT_REGEXP' => array(
64        1 => '/^......(\*.*?$)/m', // Fixed-form comment
65        2 => '/\$SET.*/i'          // MF compiler directive indicator
66        ),
67    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
68    'QUOTEMARKS' => array('"', "'"),
69    'ESCAPE_CHAR' => '',
70    'NUMBERS' =>
71        GESHI_NUMBER_INT_BASIC |
72        GESHI_NUMBER_FLT_NONSCI |
73        GESHI_NUMBER_FLT_SCI_SHORT |
74        GESHI_NUMBER_FLT_SCI_ZERO,
75    'KEYWORDS' => array(
76        // Statements containing spaces. These are separate to other statements
77        // so that they are highlighted correctly.
78        1 => array(
79            'DELETE FILE', 'GO TO', 'NEXT SENTENCE', 'XML GENERATE',
80            'XML PARSE'
81            ),
82
83        2 => array( // Other Reserved Words
84            '3-D', 'ABSENT', 'ABSTRACT', 'ACCESS', 'ACQUIRE',
85            'ACTION', 'ACTIVE-CLASS', 'ACTIVE-X', 'ACTUAL', 'ADDRESS',
86            'ADDRESS-ARRAY', 'ADDRESS-OFFSET', 'ADJUSTABLE-COLUMNS',
87            'ADVANCING', 'AFP-5A', 'AFTER', 'ALIGNED', 'ALIGNMENT', 'ALL',
88            'ALLOW', 'ALLOWING', 'ALPHABET', 'ALPHABETIC',
89            'ALPHABETIC-LOWER', 'ALPHABETIC-UPPER', 'ALPHANUMERIC',
90            'ALPHANUMERIC-EDITED', 'ALSO', 'ALTERNATE', 'AND', 'ANY',
91            'ANYCASE',
92            'APPLY', 'ARE', 'AREA', 'AREAS', 'ARGUMENT-NUMBER',
93            'ARGUMENT-VALUE',
94            'ARITHMETIC', 'AS', 'ASCENDING',
95            'ASSEMBLY-ATTRIBUTES', 'ASSIGN', 'AT', 'ATTRIBUTE', 'AUTHOR',
96            'AUTO', 'AUTO-DECIMAL', 'AUTO-HYPHEN-SKIP', 'AUTO-MINIMIZE',
97            'AUTO-RESIZE', 'AUTO-SKIP', 'AUTO-SPIN', 'AUTOMATIC',
98            'AUTOTERMINATE', 'AWAY-FROM-ZERO',
99            'AX-EVENT-LIST', 'B-AND', 'B-EXOR', 'B-LEFT',
100            'B-NOT', 'B-OR', 'B-RIGHT', 'B-XOR', 'BACKGROUND-COLOR',
101            'BACKGROUND-COLOUR', 'BACKGROUND-HIGH', 'BACKGROUND-LOW',
102            'BACKGROUND-STANDARD', 'BACKWARD', 'BAR', 'BASED', 'BASIS', 'BEEP',
103            'BEFORE', 'BEGINNING', 'BELL', 'BINARY', 'BINARY-CHAR',
104            'BINARY-DOUBLE', 'BINARY-LONG', 'BINARY-SHORT', 'BIND', 'BIT',
105            'BITMAP', 'BITMAP-END', 'BITMAP-HANDLE', 'BITMAP-NUMBER',
106            'BITMAP-RAW-HEIGHT', 'BITMAP-RAW-WIDTH', 'BITMAP-SCALE',
107            'BITMAP-START', 'BITMAP-TIMER', 'BITMAP-TRAILING', 'BITMAP-WIDTH',
108            'BLANK', 'BLINK', 'BLINKING', 'BLOB', 'BLOB-FILE', 'BLOB-LOCATOR',
109            'BLOCK', 'BOLD', 'BOOLEAN', 'BOTTOM', 'BOX', 'BOXED', 'BROWSING',
110            'BUSY', 'BUTTONS', 'BY', 'C01', 'C02', 'C03', 'C04',
111            'C05',
112            'C06', 'C07', 'C08', 'C09', 'C10', 'C11', 'C12', 'CALENDAR-FONT',
113            'CALLED', 'CANCEL-BUTTON', 'CAPACITY', 'CATCH', 'CBL',
114            'CBL-CTR', 'CCOL', 'CD', 'CELL', 'CELL-COLOR', 'CELL-DATA',
115            'CELL-FONT', 'CELL-PROTECTION', 'CELLS', 'CENTER', 'CENTERED',
116            'CENTERED-HEADINGS', 'CENTURY-DATE', 'CENTURY-DAY', 'CF', 'CH',
117            'CHAINING', 'CHANGED', 'CHAR-VARYING',
118            'CHARACTER',
119            'CHARACTERS', 'CHART', 'CHECK-BOX', 'CHECKING', 'CLASS',
120            'CLASS-ATTRIBUTES', 'CLASS-CONTROL', 'CLASS-ID', 'CLASS-OBJECT',
121            'CLASSIFICATION',
122            'CLEAR-SELECTION', 'CLINE', 'CLINES', 'CLOB', 'CLOB-FILE',
123            'CLOB-LOCATOR', 'CLOCK-UNITS', 'COBOL', 'CODE', 'CODE-SET',
124            'COERCION', 'COL', 'COLLATING', 'COLORS', 'COLOUR',
125            'COLOURS', 'COLS', 'COLUMN', 'COLUMN-COLOR', 'COLUMN-DIVIDERS',
126            'COLUMN-FONT', 'COLUMN-HEADINGS', 'COLUMN-PROTECTION', 'COLUMNS',
127            'COM-REG', 'COMBO-BOX', 'COMMA', 'COMMITMENT', 'COMMON',
128            'COMMUNICATION', 'COMP', 'COMP-0', 'COMP-1', 'COMP-2', 'COMP-3',
129            'COMP-4', 'COMP-5', 'COMP-6', 'COMP-X', 'COMPRESSION',
130            'COMPUTATIONAL', 'COMPUTATIONAL-0', 'COMPUTATIONAL-1',
131            'COMPUTATIONAL-2', 'COMPUTATIONAL-3', 'COMPUTATIONAL-4',
132            'COMPUTATIONAL-5', 'COMPUTATIONAL-6', 'COMPUTATIONAL-X',
133            'CONDITION-VALUE', 'CONFIGURATION', 'CONSOLE', 'CONSTANT',
134            'CONSTRAIN', 'CONSTRAINTS', 'CONTAINS', 'CONTENT',
135            'CONTROL', 'CONTROL-AREA', 'CONTROLS', 'CONTROLS-UNCROPPED',
136            'CONVERSION', 'CONVERT', 'CONVERTING', 'COPY-SELECTION',
137            'CORE-INDEX', 'CORR', 'CORRESPONDING', 'COUNT',
138            'CREATING', 'CRT', 'CRT-UNDER', 'CSIZE', 'CSP', 'CURRENCY',
139            'CURSOR', 'CURSOR-COL', 'CURSOR-COLOR',
140            'CURSOR-FRAME-WIDTH', 'CURSOR-ROW', 'CURSOR-X', 'CURSOR-Y',
141            'CUSTOM-ATTRIBUTE', 'CUSTOM-PRINT-TEMPLATE', 'CYCLE', 'CYL-INDEX',
142            'CYL-OVERFLOW', 'DASHED', 'DATA', 'DATA-COLUMNS',
143            'DATA-POINTER', 'DATA-TYPES', 'DATABASE-KEY', 'DATABASE-KEY-LONG',
144            'DATE', 'DATE-COMPILED', 'DATE-ENTRY', 'DATE-RECORD',
145            'DATE-WRITTEN', 'DAY', 'DAY-OF-WEEK', 'DBCLOB', 'DBCLOB-FILE',
146            'DBCLOB-LOCATOR', 'DBCS', 'DE', 'DEBUG', 'DEBUG-CONTENTS',
147            'DEBUG-ITEM', 'DEBUG-LINE', 'DEBUG-NAME', 'DEBUG-SUB-1',
148            'DEBUG-SUB-2', 'DEBUG-SUB-3', 'DEBUGGING', 'DECIMAL',
149            'DECIMAL-POINT', 'DECLARATIVES', 'DEFAULT',
150            'DEFAULT-BUTTON', 'DEFAULT-FONT', 'DEFINITION',
151            'DELEGATE-ID', 'DELIMITED', 'DELIMITER', 'DEPENDING',
152            'DESCENDING', 'DESTINATION', 'DESTROY', 'DETAIL', 'DICTIONARY',
153            'DISABLE', 'DISC', 'DISJOINING', 'DISK', 'DISP',
154            'DISPLAY-1', 'DISPLAY-COLUMNS', 'DISPLAY-FORMAT', 'DISPLAY-ST',
155            'DIVIDER-COLOR', 'DIVIDERS', 'DIVISION', 'DOT-DASH',
156            'DOTTED', 'DOWN', 'DRAG-COLOR', 'DRAW', 'DROP', 'DROP-DOWN',
157            'DROP-LIST', 'DUPLICATES', 'DYNAMIC', 'EBCDIC', 'EC', 'ECHO', 'EGCS',
158            'EGI', 'EJECT', 'ELEMENTARY', 'ELSE', 'EMI', 'EMPTY-CHECK',
159            'ENABLE', 'ENABLED', 'END', 'END-ACCEPT', 'END-ADD', 'END-CALL',
160            'END-CHAIN', 'END-COLOR', 'END-COMPUTE', 'END-DELEGATE',
161            'END-DELETE', 'END-DISPLAY', 'END-DIVIDE', 'END-EVALUATE',
162            'END-IF', 'END-INVOKE', 'END-MODIFY', 'END-MOVE', 'END-MULTIPLY',
163            'END-OF-PAGE', 'END-PERFORM', 'END-READ', 'END-RECEIVE',
164            'END-RETURN', 'END-REWRITE', 'END-SEARCH', 'END-START',
165            'END-STRING', 'END-SUBTRACT', 'END-SYNC', 'END-TRY',
166            'END-UNSTRING', 'END-WAIT', 'END-WRITE', 'END-XML', 'ENDING',
167            'ENGRAVED', 'ENSURE-VISIBLE', 'ENTRY-CONVENTION',
168            'ENTRY-FIELD',
169            'ENTRY-REASON', 'ENUM', 'ENUM-ID', 'ENVIRONMENT',
170            'ENVIRONMENT-NAME', 'ENVIRONMENT-VALUE', 'EOL', 'EOP',
171            'EOS', 'EQUAL', 'EQUALS', 'ERASE', 'ERROR', 'ESCAPE',
172            'ESCAPE-BUTTON', 'ESI', 'EVENT', 'EVENT-LIST',
173            'EVENT-POINTER', 'EVERY', 'EXCEEDS', 'EXCEPTION',
174            'EXCEPTION-OBJECT', 'EXCEPTION-VALUE', 'EXCESS-3',
175            'EXCLUDE-EVENT-LIST', 'EXCLUSIVE',
176            'EXPAND', 'EXPANDS', 'EXTEND', 'EXTENDED',
177            'EXTENDED-SEARCH', 'EXTENSION', 'EXTERNAL', 'EXTERNAL-FORM',
178            'EXTERNALLY-DESCRIBED-KEY', 'FACTORY', 'FALSE', 'FD',
179            'FH--FCD', 'FH--KEYDEF', 'FILE', 'FILE-CONTROL', 'FILE-ID',
180            'FILE-LIMIT', 'FILE-LIMITS', 'FILE-NAME', 'FILE-POS', 'FILL-COLOR',
181            'FILL-COLOR2', 'FILL-PERCENT', 'FILLER', 'FINAL', 'FINALLY',
182            'FINISH-REASON', 'FIRST', 'FIXED', 'FIXED-FONT', 'FIXED-WIDTH',
183            'FLAT', 'FLAT-BUTTONS', 'FLOAT-BINARY-7', 'FLOAT-BINARY-16',
184            'FLOAT-BINARY-34', 'FLOAT-DECIMAL-16', 'FLOAT-DECIMAL-34',
185            'FLOAT-EXTENDED', 'FLOAT-LONG',
186            'FLOAT-SHORT', 'FLOATING', 'FONT', 'FOOTING', 'FOR',
187            'FOREGROUND-COLOR', 'FOREGROUND-COLOUR', 'FOREVER', 'FORMAT',
188            'FRAME', 'FRAMED', 'FROM', 'FULL', 'FULL-HEIGHT',
189            'FUNCTION', 'FUNCTION-ID', 'FUNCTION-POINTER', 'GENERATE',
190            'GET', 'GETTER', 'GIVING', 'GLOBAL', 'GO-BACK', 'GO-FORWARD',
191            'GO-HOME', 'GO-SEARCH', 'GRAPHICAL', 'GREATER', 'GRID',
192            'GRIP', 'GROUP', 'GROUP-USAGE', 'GROUP-VALUE', 'HANDLE',
193            'HAS-CHILDREN', 'HEADING', 'HEADING-COLOR', 'HEADING-DIVIDER-COLOR',
194            'HEADING-FONT', 'HEAVY', 'HEIGHT', 'HEIGHT-IN-CELLS', 'HELP-ID',
195            'HIDDEN-DATA', 'HIGH', 'HIGH-COLOR', 'HIGH-VALUE', 'HIGH-VALUES',
196            'HIGHLIGHT', 'HORIZONTAL', 'HOT-TRACK', 'HSCROLL', 'HSCROLL-POS',
197            'I-O', 'I-O-CONTROL', 'ICON', 'ID', 'IDENTIFICATION',
198            'IDENTIFIED', 'IFINITY', 'IGNORE', 'IGNORING', 'IMPLEMENTS', 'IN',
199            'INDEPENDENT', 'INDEX', 'INDEXED', 'INDEXER', 'INDEXER-ID', 'INDIC',
200            'INDICATE', 'INDICATOR', 'INDICATORS', 'INDIRECT',
201            'INHERITING', 'INHERITS',
202            'INITIAL', 'INITIALIZED', 'INPUT',
203            'INPUT-OUTPUT', 'INQUIRE', 'INSERT', 'INSERT-ROWS',
204            'INSERTION-INDEX', 'INSTALLATION', 'INSTANCE',
205            'INTERFACE', 'INTERFACE-ID', 'INTERMEDIATE',
206            'INTERNAL', 'INTO', 'INTRINSIC',
207            'INVALID', 'INVOKED', 'IS', 'ITEM', 'ITEM-BOLD',
208            'ITEM-ID', 'ITEM-TEXT', 'ITEM-TO-ADD', 'ITEM-TO-DELETE',
209            'ITEM-TO-EMPTY', 'ITEM-VALUE', 'ITERATOR', 'ITERATOR-ID', 'J',
210            'JOINED', 'JOINING', 'JUST', 'JUSTIFIED', 'KANJI',
211            'KEPT', 'KEY', 'KEY-YY', 'KEYBOARD', 'LABEL', 'LABEL-OFFSET',
212            'LARGE-FONT', 'LAST', 'LAST-ROW', 'LAYOUT-DATA', 'LAYOUT-MANAGER',
213            'LC_ALL', 'LC_COLLATE', 'LC_CTYPE', 'LC_CURRENCY', 'LC_MESSAGES',
214            'LC_MONETARY', 'LC_NUMERIC', 'LC_TIME', 'LEADING', 'LEADING-SHIFT',
215            'LEAVE', 'LEFT', 'LEFT-JUSTIFY', 'LEFT-TEXT', 'LEFTLINE',
216            'LENGTH-CHECK', 'LESS', 'LIMIT', 'LIMITS', 'LIN', 'LINAGE',
217            'LINAGE-COUNTER', 'LINE', 'LINE-COUNTER', 'LINES', 'LINES-AT-ROOT',
218            'LINK', 'LINKAGE', 'LIST', 'LIST-BOX', 'LM-RESIZE', 'LOCAL-STORAGE',
219            'LOCALE', 'LOCK', 'LOCKING', 'LONG-DATE', 'LONG-VARBINARY',
220            'LONG-VARCHAR', 'LOW', 'LOW-COLOR', 'LOW-VALUE', 'LOW-VALUES',
221            'LOWER', 'LOWERED', 'LOWLIGHT', 'MANUAL', 'MASS-UPDATE',
222            'MASTER-INDEX', 'MAX-HEIGHT', 'MAX-LINES', 'MAX-PROGRESS',
223            'MAX-SIZE', 'MAX-TEXT', 'MAX-VAL', 'MAX-WIDTH', 'MDI-CHILD',
224            'MDI-FRAME', 'MEDIUM-FONT', 'MEMORY', 'MENU', 'MESSAGE',
225            'MESSAGES', 'METACLASS', 'METHOD', 'METHOD-ID', 'MIN-HEIGHT',
226            'MIN-LINES', 'MIN-SIZE', 'MIN-VAL', 'MIN-WIDTH', 'MODAL', 'MODE',
227            'MODELESS', 'MODIFIED', 'MODULES', 'MONITOR-POINTER',
228            'MORE-LABELS', 'MULTILINE',
229            'MUTEX-POINTER', 'NAME', 'NAMED', 'NATIONAL',
230            'NATIONAL-EDITED', 'NATIVE', 'NAVIGATE-URL', 'NCHAR',
231            'NEAREST-AWAY-FROM-ZERO', 'NEAREST-EVEN', 'NEAREST-TOWARD-ZERO',
232            'NEGATIVE', 'NEGATIVE-INFINITY',
233            'NESTED', 'NET-EVENT-LIST', 'NEW', 'NEWABLE', 'NEXT ', 'NEXT-ITEM',
234            'NO', 'NO-AUTO-DEFAULT', 'NO-AUTOSEL', 'NO-BOX', 'NO-CELL-DRAG',
235            'NO-CLOSE', 'NO-DIVIDERS', 'NO-ECHO', 'NO-F4', 'NO-FOCUS',
236            'NO-GROUP-TAB', 'NO-KEY-LETTER', 'NO-SEARCH', 'NO-TAB', 'NO-UPDOWN',
237            'NOMINAL', 'NONE', 'NORMAL', 'NOT', 'NOT-A-NUMBER', 'NOTIFY',
238            'NOTIFY-CHANGE', 'NOTIFY-DBLCLICK', 'NOTIFY-SELCHANGE',
239            'NSTD-REELS', 'NULL', 'NULLS', 'NUM-COL-HEADINGS',
240            'NUM-ROW-HEADINGS', 'NUM-ROWS', 'NUMBER', 'NUMBERS', 'NUMERIC',
241            'NUMERIC-EDITED', 'NUMERIC-FILL', 'O-FILL', 'OBJECT',
242            'OBJECT-COMPUTER', 'OBJECT-ID', 'OBJECT-REFERENCE',
243            'OBJECT-STORAGE', 'OCCURS', 'OF', 'OFF', 'OK-BUTTON', 'OMITTED',
244            'ONLY', 'OOSTACKPTR', 'OPERATOR', 'OPERATOR-ID',
245            'OPTIONAL', 'OPTIONS', 'OR', 'ORDER', 'ORGANIZATION', 'OTHER',
246            'OTHERWISE', 'OUTPUT', 'OVERFLOW', 'OVERLAP-LEFT', 'OVERLAP-TOP',
247            'OVERLAPPED', 'OVERLINE', 'OVERRIDE', 'PACKED-DECIMAL',
248            'PADDING', 'PAGE', 'PAGE-COUNTER', 'PAGE-SETUP', 'PAGE-SIZE',
249            'PAGED', 'PANEL-INDEX', 'PANEL-STYLE', 'PANEL-TEXT', 'PANEL-WIDTHS',
250            'PARAGRAPH', 'PARAMS', 'PARENT', 'PARSE', 'PARTIAL', 'PASSWORD',
251            'PERMANENT', 'PF', 'PH', 'PIC', 'PICTURE', 'PIXEL',
252            'PIXELS', 'PLACEMENT', 'PLUS', 'POINTER', 'POP-UP', 'POSITION',
253            'POSITION-SHIFT', 'POSITIONING', 'POSITIVE', 'POSITIVE-INFINITY',
254            'PREFIXED', 'PREFIXING', 'PRESENT',
255            'PREVIOUS', 'PRINT', 'PRINT-CONTROL', 'PRINT-NO-PROMPT',
256            'PRINT-PREVIEW', 'PRINT-SWITCH', 'PRINTER', 'PRINTER-1', 'PRINTING',
257            'PRIOR', 'PRIORITY', 'PRIVATE', 'PROCEDURE', 'PROCEDURE-POINTER',
258            'PROCEDURES', 'PROCEED', 'PROCESS', 'PROCESSING', 'PROGRAM',
259            'PROGRAM-ID', 'PROGRAM-POINTER', 'PROGRESS', 'PROHIBITED',
260            'PROMPT', 'PROPERTIES',
261            'PROPERTY', 'PROPERTY-ID', 'PROPERTY-VALUE', 'PROTECTED',
262            'PROTOTYPE', 'PUBLIC', 'PURGE', 'PUSH-BUTTON', 'QUERY-INDEX',
263            'QUEUE', 'QUOTE', 'QUOTES', 'RADIO-BUTTON', 'RAISED',
264            'RAISING', 'RD', 'READ-ONLY', 'READING',
265            'READY', 'RECORD', 'RECORD-DATA', 'RECORD-OVERFLOW',
266            'RECORD-TO-ADD', 'RECORD-TO-DELETE', 'RECORDING', 'RECORDS',
267            'RECURSIVE', 'REDEFINE', 'REDEFINES', 'REDEFINITION', 'REEL',
268            'REFERENCE', 'REFERENCES', 'REFRESH', 'REGION-COLOR', 'RELATION',
269            'RELATIVE', 'RELOAD', 'REMAINDER', 'REMARKS', 'REMOVAL',
270            'RENAMES', 'REORG-CRITERIA', 'REPEATED', 'REPLACE', 'REPLACING',
271            'REPORT', 'REPORTING', 'REPORTS', 'REPOSITORY', 'REQUIRED',
272            'REPRESENTS-NOT-A-NUMBER',
273            'REREAD', 'RERUN', 'RESERVE', 'RESET-GRID', 'RESET-LIST',
274            'RESET-TABS', 'RESIZABLE', 'RESTRICTED', 'RESULT-SET-LOCATOR',
275            'RETRY', 'RETURN-CODE', 'RETURNING',
276            'REVERSE-VIDEO', 'REVERSED', 'REWIND', 'RF', 'RH',
277            'RIGHT', 'RIGHT-ALIGN', 'RIGHT-JUSTIFY', 'RIMMED',
278            'ROLLING', 'ROUNDED', 'ROUNDING', 'ROW-COLOR', 'ROW-COLOR-PATTERN',
279            'ROW-DIVIDERS', 'ROW-FONT', 'ROW-HEADINGS', 'ROW-PROTECTION',
280            'ROWID', 'RUN', 'S01', 'S02', 'S03', 'S04', 'S05', 'SAME',
281            'SAVE-AS', 'SAVE-AS-NO-PROMPT', 'SCREEN', 'SCROLL', 'SCROLL-BAR',
282            'SD', 'SEARCH-OPTIONS', 'SEARCH-TEXT', 'SECONDS',
283            'SECTION', 'SECURE', 'SECURITY', 'SEEK', 'SEGMENT', 'SEGMENT-LIMIT',
284            'SELECT-ALL', 'SELECTION-INDEX', 'SELECTION-TEXT',
285            'SELECTIVE', 'SELF', 'SELF-ACT', 'SELFCLASS', 'SEMAPHORE-POINTER',
286            'SEND', 'SENTENCE', 'SEPARATE', 'SEPARATION', 'SEQUENCE',
287            'SEQUENTIAL', 'SETTER', 'SHADING', 'SHADOW',
288            'SHARING', 'SHIFT-IN', 'SHIFT-OUT', 'SHORT-DATE', 'SHOW-LINES',
289            'SHOW-NONE', 'SHOW-SEL-ALWAYS', 'SIGNED', 'SIGNED-INT',
290            'SIGNED-LONG', 'SIGNED-SHORT', 'SIZE', 'SKIP1',
291            'SKIP2', 'SKIP3', 'SMALL-FONT', 'SORT-CONTROL',
292            'SORT-CORE-SIZE', 'SORT-FILE-SIZE', 'SORT-MERGE', 'SORT-MESSAGE',
293            'SORT-MODE-SIZE', 'SORT-OPTION', 'SORT-ORDER', 'SORT-RETURN',
294            'SORT-TAPE', 'SORT-TAPES', 'SOURCE', 'SOURCE-COMPUTER', 'SOURCES',
295            'SPACE', 'SPACE-FILL', 'SPACES', 'SPECIAL-NAMES', 'SPINNER', 'SQL',
296            'SQUARE', 'STANDARD', 'STANDARD-1', 'STANDARD-2', 'STANDARD-3',
297            'STANDARD-BINARY', 'STANDARD-DECIMAL',
298            'START-X', 'START-Y', 'STARTING', 'STATEMENT', 'STATIC',
299            'STATIC-LIST',
300            'STATUS', 'STATUS-BAR', 'STATUS-TEXT', 'STEP',
301            'STOP-BROWSER', 'STRONG', 'STYLE', 'SUB-QUEUE-1',
302            'SUB-QUEUE-2', 'SUB-QUEUE-3', 'SUBFILE', 'SUBWINDOW',
303            'SUFFIXING', 'SUPER', 'SYMBOL', 'SYMBOLIC',
304            'SYNCHRONIZED', 'SYSIN', 'SYSIPT', 'SYSLST', 'SYSOUT',
305            'SYSPCH', 'SYSPUNCH', 'SYSTEM', 'SYSTEM-DEFAULT', 'SYSTEM-INFO',
306            'TAB', 'TAB-CONTROL', 'TAB-TO-ADD', 'TAB-TO-DELETE', 'TABLE',
307            'TALLY', 'TALLYING', 'TAPE', 'TAPES', 'TEMPORARY', 'TERMINAL',
308            'TERMINAL-INFO', 'TERMINATION-VALUE', 'TEST', 'TEXT',
309            'THAN', 'THEN', 'THREAD', 'THREAD-LOCAL', 'THREAD-LOCAL-STORAGE',
310            'THREAD-POINTER', 'THROUGH', 'THRU', 'THUMB-POSITION',
311            'TILED-HEADINGS', 'TIME', 'TIME-OF-DAY', 'TIME-OUT', 'TIME-RECORD',
312            'TIMEOUT', 'TIMES', 'TIMESTAMP', 'TIMESTAMP-OFFSET',
313            'TIMESTAMP-OFFSET-RECORD', 'TIMESTAMP-RECORD', 'TITLE', 'TITLE-BAR',
314            'TITLE-POSITION', 'TO', 'TOOL-BAR', 'TOP', 'TOTALED', 'TOTALING',
315            'TOWARD-GREATER', 'TOWARD-LESSER',
316            'TRACE', 'TRACK-AREA', 'TRACK-LIMIT', 'TRACK-THUMB', 'TRACKS',
317            'TRADITIONAL-FONT', 'TRAILING', 'TRAILING-SHIFT', 'TRAILING-SIGN',
318            'TRANSACTION', 'TRANSPARENT', 'TRANSPARENT-COLOR',
319            'TREE-VIEW', 'TRUE', 'TRUNCATION', 'TYPE', 'TYPEDEF', 'UCS-4',
320            'UNDERLINE', 'UNDERLINED', 'UNEQUAL', 'UNFRAMED', 'UNIT', 'UNITS',
321            'UNIVERSAL', 'UNSIGNED', 'UNSIGNED-INT', 'UNSIGNED-LONG',
322            'UNSIGNED-SHORT',
323            'UNSORTED', 'UP', 'UPDATE', 'UNTIL', 'UPON', 'UPPER',
324            'UPSI-0', 'UPSI-1', 'UPSI-2', 'UPSI-3', 'UPSI-4', 'UPSI-5',
325            'UPSI-6', 'UPSI-7', 'USAGE', 'USE-ALT', 'USE-RETURN',
326            'USE-TAB', 'USER', 'USER-COLORS', 'USER-DEFAULT', 'USER-GRAY',
327            'USER-WHITE', 'USING', 'UTF-16', 'UTF-8', 'VALID',
328            'VAL-STATUS', 'VALIDATE-STATUS',
329            'VALUE', 'VALUE-FORMAT', 'VALUES', 'VALUETYPE', 'VALUETYPE-ID',
330            'VARBINARY', 'VARIABLE', 'VARIANT', 'VARYING', 'VERTICAL',
331            'VERY-HEAVY', 'VIRTUAL-WIDTH', 'VISIBLE', 'VPADDING', 'VSCROLL',
332            'VSCROLL-BAR', 'VSCROLL-POS', 'VTOP', 'WEB-BROWSER', 'WHEN',
333            'WHERE', 'WIDTH', 'WIDTH-IN-CELLS', 'WINDOW',
334            'WITH', 'WORDS', 'WORKING-STORAGE', 'WRAP', 'WRITE-ONLY',
335            'WRITE-VERIFY', 'WRITING', ' XML', 'XML ', 'XML-CODE', 'XML-EVENT',
336            'XML-NTEXT', 'XML-TEXT', 'YIELDING', 'YYYYDDD', 'YYYYMMDD', 'ZERO',
337            'ZERO-FILL', 'ZEROES', 'ZEROS'
338            ),
339        3 => array( // Statement Keywords containing no spaces.
340            'ACCEPT', 'ADD', 'ALTER', 'ALLOCATE', 'ATTACH', 'CALL', 'CANCEL',
341            'CHAIN', 'CREATE',
342            'CLOSE', 'COLOR', 'COMPUTE', 'COMMIT', 'CONTINUE',
343            'COPY', 'DECLARE', 'DELEGATE', 'DELETE', 'DETACH', 'DISPLAY',
344            'DIVIDE',
345            'ENTER', 'ENTRY', 'EVALUATE', 'EXAMINE',
346            'EXEC', 'EXECUTE', 'EXHIBIT', 'EXIT', 'FREE', 'GOBACK',
347            'IF',  'INITIALIZE', 'INITIATE', 'INSPECT', 'INVOKE', 'MERGE',
348            'MODIFY', 'MOVE', 'MULTIPLY', 'NOTE', 'ON', 'OPEN',
349            'PERFORM', 'RAISE', 'READ', 'RECEIVE', 'RELEASE', 'RETURN',
350            'RESET', 'RESUME',
351            'REWRITE', 'ROLLBACK', 'SEARCH', 'SELECT', 'SERVICE', 'SET', 'SORT',
352            'START', 'STOP', 'STRING', 'SUBTRACT', 'SYNC',
353            'SUPPRESS', 'TERMINATE',
354            'TRANSFORM', 'TRY', 'UNLOCKFILE', 'UNLOCK', 'UNSTRING', 'USE',
355            'VALIDATE', 'WAIT', 'WRITE'
356            ),
357        4 => array( // Intrinsic functions
358            'ABS', 'ACOS', 'ANNUITY', 'ASIN', 'ATAN', 'BOOLEAN-OF-INTEGER',
359            'BYTE-LENGTH', 'CHAR', 'CHAR-NATIONAL',
360            'COS', 'COMBINED-DATETIME', 'CONCATENATE', 'CURRENT-DATE',
361            'DATE-OF-INTEGER', 'DATE-TO-YYYYMMDD', 'DAY-TO-YYYYDDD',
362            'DAY-OF-INTEGER', 'DISPLAY-OF', 'E', 'EXCEPTION-FILE',
363            'EXCEPTION-FILE-N', 'EXCEPTION-LOCATION',
364            'EXCEPTION-LOCATION-N', 'EXCEPTION-STATEMENT', 'EXCEPTION-STATUS',
365            'EXP', 'EXP10', 'FACTORIAL', 'FORMATTED-CURRENT-DATE',
366            'FORMATTED-DATE', 'FORMATTED-DATETIME', 'FORMATTED-TIME',
367            'FRACTION-PART', 'HIGHEST-ALGEBRAIC', 'INTEGER',
368            'INTEGER-OF-BOOLEAN', 'INTEGER-OF-DATE', 'INTEGER-OF-DAY',
369            'INTEGER-OF-FORMATTED-DATE', 'INTEGER-PART', 'LENGTH',
370            'LOCALE-COMPARE',
371            'LOCALE-DATE', 'LOCALE-TIME', 'LOCALE-TIME-FROM-SECONDS',
372            'LOCALE-TIME-FROM-SECS', 'LOG',
373            'LOG10', 'LOWER-CASE', 'LOWEST-ALGEBRAIC',
374            'MAX', 'MEAN', 'MEDIAN', 'MIDRANGE',
375            'MIN', 'MOD', 'NATIONAL-OF', 'NUMVAL', 'NUMVAL-C', 'NUMVAL-F',
376            'ORD', 'ORD-MAX', 'ORD-MIN',
377            'PI', 'PRESENT-VALUE', 'RANDOM', 'RANGE', 'REM', 'REVERSE',
378            'SECONDS-FROM-FORMATTED-TIME', 'SIGN', 'SIN', 'SQRT',
379            'SECONDS-PAST-MIDNIGHT', 'STANDARD-DEVIATION', 'STANDARD-COMPARE',
380            'STORED-CHAR-LENGTH',
381            'SUBSTITUTE', 'SUBSTITUE-CASE', 'SUM', 'TAN', 'TEST-DATE-YYYYMMDD',
382            'TEST-DAY-YYYYDDD', 'TEST-FORMATTED-TIME', 'TEST-NUMVAL',
383            'TEST-NUMVAL-C', 'TEST-NUMVAL-F',
384            'TRIM', 'UPPER-CASE', 'VARIANCE', 'YEAR-TO-YYYY', 'WHEN-COMPILED'
385            ),
386        ),
387    'SYMBOLS' => array(
388        //  Arithmetic and comparison operators must be surrounded by spaces.
389        ' + ', ' - ', ' * ', ' / ', ' ** ', ' ^ ',
390        '.', ',',
391        ' = ', ' < ', ' > ', ' >= ', ' <= ', ' <> ',
392        '(', ')', '[', ']'
393        ),
394    'CASE_SENSITIVE' => array(
395        GESHI_COMMENTS => false,
396        1 => false,
397        2 => false,
398        3 => false,
399        4 => false,
400        ),
401    'STYLES' => array(
402        'KEYWORDS' => array(
403            1 => 'color: #000000; font-weight: bold;',
404            2 => 'color: #008000; font-weight: bold;',
405            3 => 'color: #000000; font-weight: bold;',
406            4 => 'color: #9d7700;',
407            ),
408        'COMMENTS' => array(
409            1 => 'color: #a0a0a0; font-style: italic;',
410            2 => 'color: #000080; font-weight: bold;',
411            ),
412        'ESCAPE_CHAR' => array(
413            ),
414        'BRACKETS' => array(
415            0 => 'color: #339933;'
416            ),
417        'STRINGS' => array(
418            0 => 'color: #ff0000;'
419            ),
420        'NUMBERS' => array(
421            0 => 'color: #993399;'
422            ),
423        'METHODS' => array(
424            1 => 'color: #800080;'
425            ),
426        'SYMBOLS' => array(
427            0 => 'color: #000066;'
428            ),
429        'REGEXPS' => array(
430            ),
431        'SCRIPT' => array(
432            )
433        ),
434    'URLS' => array(
435        1 => '',
436        2 => '',
437        3 => '',
438        4 => ''
439        ),
440    'OOLANG' => true,
441    'OBJECT_SPLITTERS' => array(
442        1 => '::'
443        ),
444    'REGEXPS' => array(
445        ),
446    'STRICT_MODE_APPLIES' => GESHI_NEVER,
447    'SCRIPT_DELIMITERS' => array(
448        ),
449    'HIGHLIGHT_STRICT_BLOCK' => array(
450        ),
451    'TAB_WIDTH' => 4,
452    'PARSER_CONTROL' => array(
453        'KEYWORDS' => array(
454            'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9-\$_\|\#|^&])',
455        ),
456    ),
457);
458