1<?php
2/*************************************************************************************
3 * jcl.php
4 * -----------
5 * Author: Ramesh Vishveshwar (ramesh.vishveshwar@gmail.com)
6 * Copyright: (c) 2012 Ramesh Vishveshwar (http://thecodeisclear.in)
7 * Release Version: 1.0.9.1
8 * Date Started: 2011/09/16
9 *
10 * JCL (MVS), DFSORT, IDCAMS language file for GeSHi.
11 *
12 * CHANGES
13 * -------
14 * 2011/09/16 (1.0.0)
15 *   -  Internal Release (for own blog/testing)
16 * 2012/09/22 (1.0.1)
17 *   - Released with support for DFSORT, ICETOOL, IDCAMS
18 *   - Added support for Symbolic variables in JCL
19 *   - Added support for TWS OPC variables
20 *
21 *************************************************************************************
22 *
23 *     This file is part of GeSHi.
24 *
25 *   GeSHi is free software; you can redistribute it and/or modify
26 *   it under the terms of the GNU General Public License as published by
27 *   the Free Software Foundation; either version 2 of the License, or
28 *   (at your option) any later version.
29 *
30 *   GeSHi is distributed in the hope that it will be useful,
31 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
32 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
33 *   GNU General Public License for more details.
34 *
35 *   You should have received a copy of the GNU General Public License
36 *   along with GeSHi; if not, write to the Free Software
37 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
38 *
39 ************************************************************************************/
40
41$language_data = array (
42    'LANG_NAME' => 'JCL',
43    'COMMENT_SINGLE' => array(),
44    'COMMENT_MULTI' => array(),
45    'COMMENT_REGEXP' => array(
46        // Comments identified using REGEX
47        // Comments start with //* but should not be followed by % (TWS) or + (some JES3 stmts)
48        3 => "\/\/\*[^%](.*?)(\n)"
49        ),
50    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
51    'QUOTEMARKS' => array("'", '"'),
52    'ESCAPE_CHAR' => '',
53    'KEYWORDS' => array(
54        1 => array(
55            'COMMAND', 'CNTL', 'DD', 'ENDCNTL', 'EXEC', 'IF', 'THEN', 'ELSE',
56            'ENDIF', 'JCLLIB', 'JOB', 'OUTPUT', 'PEND',
57            'PROC', 'SET', 'XMIT'
58            ),
59        2 => array (
60            'PGM','CLASS','NOTIFY','MSGCLASS','DSN','KEYLEN','LABEL','LIKE',
61            'RECFM','LRECL','DCB','DSORG','BLKSIZE','SPACE','STORCLAS',
62            'DUMMY','DYNAM','AVGREC','BURST','DISP','UNIT','VOLUME',
63            'MSGLEVEL','REGION'
64            ),
65        // Keywords set 3: DFSORT, ICETOOL
66        3 => array (
67            'ALTSEQ','DEBUG','END','INCLUDE','INREC','MERGE','MODS','OMIT',
68            'OPTION','OUTFIL','OUTREC','RECORD','SORT','SUM',
69            'COPY','COUNT','DEFAULTS','DISPLAY','MODE','OCCUR','RANGE',
70            'SELECT','STATS','UNIQUE','VERIFY'
71            ),
72        // Keywords set 4: IDCAMS
73        4 => array (
74            'ALTER','BLDINDEX','CNVTCAT','DEFINE','ALIAS','ALTERNATEINDEX',
75            'CLUSTER','GENERATIONDATAGROUP','GDG','NONVSAM','PAGESPACE','PATH',
76            /* 'SPACE',*/'USERCATALOG','DELETE','EXAMINE','EXPORT','DISCONNECT',
77            'EXPORTRA','IMPORT','CONNECT','IMPORTRA','LISTCAT','LISTCRA',
78            'PRINT','REPRO','RESETCAT'//,'VERIFY'
79            )
80        ),
81    'SYMBOLS' => array(
82        '(',')','=',',','>','<'
83        ),
84    'CASE_SENSITIVE' => array(
85        GESHI_COMMENTS => false,
86        1 => false,
87        2 => false,
88        3 => false,
89        4 => false
90        ),
91    'STYLES' => array(
92        'KEYWORDS' => array(
93            1 => 'color: #FF0000;',
94            2 => 'color: #21A502;',
95            3 => 'color: #FF00FF;',
96            4 => 'color: #876C00;'
97            ),
98        'COMMENTS' => array(
99            0 => 'color: #0000FF;',
100            //1 => 'color: #0000FF;',
101            //2 => 'color: #0000FF;',
102            3 => 'color: #0000FF;'
103            ),
104        'ESCAPE_CHAR' => array(
105            0 => ''
106            ),
107        'BRACKETS' => array(
108            0 => 'color: #FF7400;'
109            ),
110        'STRINGS' => array(
111            0 => 'color: #66CC66;'
112            ),
113        'NUMBERS' => array(
114            0 => 'color: #336633;'
115            ),
116        'METHODS' => array(
117            1 => '',
118            2 => ''
119            ),
120        'SYMBOLS' => array(
121            0 => 'color: #FF7400;'
122            ),
123        'REGEXPS' => array(
124            0 => 'color: #6B1F6B;',
125            1 => 'color: #6B1F6B;',
126            2 => 'color: #6B1F6B;'
127            ),
128        'SCRIPT' => array(
129            0 => ''
130            )
131        ),
132    'URLS' => array(
133        1 => '',
134        // JCL book at IBM Bookshelf is http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/handheld/Connected/BOOKS/IEA2B680/CONTENTS?SHELF=&DT=20080604022956#3.1
135        2 => '',
136        3 => '',
137        4 => ''
138        ),
139    'OOLANG' => false,
140    'OBJECT_SPLITTERS' => array(),
141    'REGEXPS' => array(
142        // The following regular expressions solves three purposes
143        // - Identify Temp Variables in JCL (e.g. &&TEMP)
144        // - Symbolic variables in JCL (e.g. &SYSUID)
145        // - TWS OPC Variables (e.g. %OPC)
146        // Thanks to Simon for pointing me to this
147        0 => '&amp;&amp;[a-zA-Z]{1,8}[0-9]{0,}',
148        1 => '&amp;[a-zA-Z]{1,8}[0-9]{0,}',
149        2 => '&amp;|\?|%[a-zA-Z]{1,8}[0-9]{0,}'
150        ),
151    'STRICT_MODE_APPLIES' => GESHI_NEVER,
152    'SCRIPT_DELIMITERS' => array(
153        ),
154    'HIGHLIGHT_STRICT_BLOCK' => array()
155);
156