Warning, /frameworks/syntax-highlighting/data/syntax/ilerpg.xml is written in an unsupported language. File is not indexed.

0001 <!DOCTYPE language>
0002 <!--
0003     *************************************************************************
0004     *                                                                       *
0005     *               Syntax highlighting for IBM iSeries ILE RPG             *
0006     *                   Copyright (C) 2003, Nick Roux                       *
0007     *                                                                       *
0008     *************************************************************************
0009 
0010     Updated: Nick Roux <nick@sundown.homeip.net>
0011     Date:    2006/04/12
0012     Version: 1.05
0013              Added support for compiler directives and especially /free
0014              Added positional check for opcodes and validation of conditioning indicators
0015 
0016     Author:  Nick Roux <nick@sundown.homeip.net>
0017     Date:    Sometime during 2003
0018     Version: 1.0
0019 
0020         This file contains the XML syntax highlighting description for the IBM
0021         iSeries ILE RPG, for KATE, the KDE Advanced Editor.  
0022         Based on information from IBM publication SC09-2508-05
0023         
0024         Known problems: 
0025          1) Calculation Specification Factor1 does not get highlighted
0026          2) Calculation Specification Extended Factor2 Continuation Line does not work correctly
0027          3) Everything from the start of Factor2 is assumed free format
0028          4) Will make a total mess of compile time array data, but that seems rather fitting
0029          5) Operation Code Extenders are not check/highlighted
0030          6) It is slow
0031 
0032         This program, including associated files, is free software.  You may
0033         distribute it and/or modify it under the terms of the GNU General Public
0034         License as published by the Free Software Foundation; either Version 2 of
0035         the license, or (at your option) any later version.
0036 
0037         This program is distributed in the hope that it will be useful, but
0038         WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
0039         or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
0040         for more details.
0041 
0042         You should have received a copy of the GNU General Public License along
0043         with this program; if not, write to the Free Software Foundation, Inc.,
0044         51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
0045 
0046 -->
0047 
0048 <language name="ILERPG" version="11" kateversion="2.2" section="Sources" extensions="QRPG*.*;qrpg*.*" mimetype="text/x-ilerpg-src" casesensitive="0" license="GPLv2+" author="Nick Roux (nick@sundown.homeip.net)">
0049   <highlighting>
0050         <list name="dkeywords">
0051                 <item>EXTPROC</item>
0052                 <item>EXTPGM</item>
0053                 <item>OPDESC</item>
0054                 <item>DATFMT</item>
0055                 <item>DIM</item>
0056                 <item>LIKEDS</item>
0057                 <item>LIKEREC</item>
0058                 <item>LIKE</item>
0059                 <item>PROCPTR</item>
0060                 <item>TIMFMT</item>
0061                 <item>VARYING</item>
0062                 <item>ASCEND</item>
0063                 <item>CONST</item>
0064                 <item>NOOPT</item>
0065                 <item>OPTIONS</item>
0066                 <item>VALUE</item>
0067                 <item>QUALIFIED</item>
0068                 <item>INZ</item>
0069                 <item>BASED</item>
0070         </list>
0071         <list name="directives">
0072                 <item>FREE</item>
0073                 <item>END-FREE</item>
0074                 <item>TITLE</item>
0075                 <item>EJECT</item>
0076                 <item>SPACE</item>
0077                 <item>COPY</item>
0078                 <item>INCLUDE</item>
0079                 <item>DEFINE</item>
0080                 <item>UNDEFINE</item>
0081                 <item>IF</item>
0082                 <item>ELSE</item>
0083                 <item>EXEC</item>
0084                 <item>END-EXEC</item>
0085                 <item>ELSEIF</item>
0086                 <item>ENDIF</item>
0087                 <item>EOF</item>
0088         </list> 
0089         <list name="directives2">
0090                 <item>NOT</item>
0091                 <item>DEFINED</item>
0092         </list> 
0093         <list name="directives3">
0094                 <item>DEFINED</item>
0095         </list> 
0096         <list name="biffs">
0097                 <item>ABS</item>
0098                 <item>ADDR</item>
0099                 <item>ALLOC</item>
0100                 <item>BITAND</item>
0101                 <item>BITNOT</item>
0102                 <item>BITOR</item>
0103                 <item>BITXOR</item>
0104                 <item>CHAR</item>
0105                 <item>CHECK</item>
0106                 <item>CHECKR</item>
0107                 <item>DATE</item>
0108                 <item>DAYS</item>
0109                 <item>DEC</item>
0110                 <item>DECH</item>
0111                 <item>DECPOS</item>
0112                 <item>DIFF</item>
0113                 <item>DIV</item>
0114                 <item>EDITC</item>
0115                 <item>EDITFLT</item>
0116                 <item>EDITW</item>
0117                 <item>ELEM</item>
0118                 <item>EOF</item>
0119                 <item>EQUAL</item>
0120                 <item>ERROR</item>
0121                 <item>FIELDS</item>
0122                 <item>FLOAT</item>
0123                 <item>FOUND</item>
0124                 <item>GRAPH</item>
0125                 <item>HOURS</item>
0126                 <item>INT</item>
0127                 <item>INTH</item>
0128                 <item>KDS</item>
0129                 <item>LEN</item>
0130                 <item>LOOKUP</item>
0131                 <item>LOOKUPLT</item>
0132                 <item>LOOKUPLE</item>
0133                 <item>LOOKUPGT</item>
0134                 <item>LOOKUPGE</item>
0135                 <item>MINUTES</item>
0136                 <item>MONTHS</item>
0137                 <item>MSECONDS</item>
0138                 <item>NULLIND</item>
0139                 <item>OCCUR</item>
0140                 <item>OPEN</item>
0141                 <item>PADDR</item>
0142                 <item>PARMS</item>
0143                 <item>REALLOC</item>
0144                 <item>REM</item>
0145                 <item>REPLACE</item>
0146                 <item>SCAN</item>
0147                 <item>SECONDS</item>
0148                 <item>SHTDN</item>
0149                 <item>SIZE</item>
0150                 <item>SQRT</item>
0151                 <item>STATUS</item>
0152                 <item>STR</item>
0153                 <item>SUBARR</item>
0154                 <item>SUBDT</item>
0155                 <item>SUBST</item>
0156                 <item>THIS</item>
0157                 <item>TIME</item>
0158                 <item>TIMESTAMP</item>
0159                 <item>TLOOKUP</item>
0160                 <item>TLOOKUPLT</item>
0161                 <item>TLOOKUPLE</item>
0162                 <item>TLOOKUPGT</item>
0163                 <item>TLOOKUPGE</item>
0164                 <item>TRIM</item>
0165                 <item>TRIML</item>
0166                 <item>TRIMR</item>
0167                 <item>UCS2</item>
0168                 <item>UNS</item>
0169                 <item>UNSH</item>
0170                 <item>XFOOT</item>
0171                 <item>XLATE</item>
0172                 <item>YEARS</item>
0173         </list>
0174         <list name="opcodes2">
0175                 <item>IF</item>
0176                 <item>DO</item>
0177                 <item>IN</item>
0178                 <item>OR</item>
0179         </list>
0180         <list name="opcodes3">
0181                 <item>DOW</item>
0182                 <item>DOU</item>
0183                 <item>FOR</item>
0184                 <item>ACQ</item>
0185                 <item>ADD</item>
0186                 <item>AND</item>
0187                 <item>CAB</item>
0188                 <item>CAS</item>
0189                 <item>CAT</item>
0190                 <item>DIV</item>
0191                 <item>DOU</item>
0192                 <item>END</item>
0193                 <item>MVR</item>
0194                 <item>OUT</item>
0195                 <item>REL</item>
0196                 <item>SUB</item>
0197                 <item>TAG</item>
0198         </list>
0199         <list name="opcodes4">
0200                 <item>WHEN</item>
0201                 <item>EVAL</item>
0202                 <item>CALL</item>
0203                 <item>COMP</item>
0204                 <item>DUMP</item>
0205                 <item>ELSE</item>
0206                 <item>EXSR</item>
0207                 <item>FEOD</item>
0208                 <item>GOTO</item>
0209                 <item>IFGT</item>
0210                 <item>IFLT</item>
0211                 <item>IFEQ</item>
0212                 <item>IFNE</item>
0213                 <item>IFGE</item>
0214                 <item>IFLE</item>
0215                 <item>ITER</item>
0216                 <item>KFLD</item>
0217                 <item>MOVE</item>
0218                 <item>MULT</item>
0219                 <item>NEXT</item>
0220                 <item>OPEN</item>
0221                 <item>ORGT</item>
0222                 <item>ORLT</item>
0223                 <item>OREQ</item>
0224                 <item>ORNE</item>
0225                 <item>ORGE</item>
0226                 <item>ORLE</item>
0227                 <item>PARM</item>
0228                 <item>POST</item>
0229                 <item>READ</item>
0230                 <item>SCAN</item>
0231                 <item>SQRT</item>
0232                 <item>TEST</item>
0233                 <item>TIME</item>
0234         </list>
0235         <list name="opcodes5">
0236                 <item>EVALR</item>
0237                 <item>ALLOC</item>
0238                 <item>ANDGT</item>
0239                 <item>ANDLT</item>
0240                 <item>ANDEQ</item>
0241                 <item>ANDNE</item>
0242                 <item>ANDGE</item>
0243                 <item>ANDLE</item>
0244                 <item>BEGSR</item>
0245                 <item>BITON</item>
0246                 <item>CABGT</item>
0247                 <item>CABLT</item>
0248                 <item>CABEQ</item>
0249                 <item>CABNE</item>
0250                 <item>CABGE</item>
0251                 <item>CABLE</item>
0252                 <item>CALLB</item>
0253                 <item>CALLP</item>
0254                 <item>CASGT</item>
0255                 <item>CASLT</item>
0256                 <item>CASEQ</item>
0257                 <item>CASNE</item>
0258                 <item>CASGE</item>
0259                 <item>CASLE</item>
0260                 <item>CHAIN</item>
0261                 <item>CHECK</item>
0262                 <item>CLEAR</item>
0263                 <item>CLOSE</item>
0264                 <item>CHECK</item>
0265                 <item>CLEAR</item>
0266                 <item>CLOSE</item>
0267                 <item>DOWGT</item>
0268                 <item>DOWLT</item>
0269                 <item>DOWEQ</item>
0270                 <item>DOWNE</item>
0271                 <item>DOWGE</item>
0272                 <item>DOWLE</item>
0273                 <item>DOUGT</item>
0274                 <item>DOULT</item>
0275                 <item>DOUEQ</item>
0276                 <item>DOUNE</item>
0277                 <item>DOUGE</item>
0278                 <item>DOULE</item>
0279                 <item>DSPLY</item>
0280                 <item>ENDCS</item>
0281                 <item>ENDDO</item>
0282                 <item>ENDIF</item>
0283                 <item>ENDSL</item>
0284                 <item>ENDSR</item>
0285                 <item>EXFMT</item>
0286                 <item>FORCE</item>
0287                 <item>KLIST</item>
0288                 <item>LEAVE</item>
0289                 <item>MHHZO</item>
0290                 <item>MHLZO</item>
0291                 <item>MLHZO</item>
0292                 <item>MLLZO</item>
0293                 <item>MOVEA</item>
0294                 <item>MOVEL</item>
0295                 <item>OCCUR</item>
0296                 <item>OTHER</item>
0297                 <item>PLIST</item>
0298                 <item>READC</item>
0299                 <item>READE</item>
0300                 <item>READP</item>
0301                 <item>RESET</item>
0302                 <item>ROLBK</item>
0303                 <item>SETGT</item>
0304                 <item>SETLL</item>
0305                 <item>SETON</item>
0306                 <item>SHTDN</item>
0307                 <item>SORTA</item>
0308                 <item>SUBST</item>
0309                 <item>TESTB</item>
0310                 <item>TESTN</item>
0311                 <item>TESTZ</item>
0312                 <item>WRITE</item>
0313                 <item>XFOOT</item>
0314                 <item>XLATE</item>
0315         </list>
0316         <list name="opcodes6">
0317                 <item>RETURN</item>
0318                 <item>ADDDUR</item>
0319                 <item>BITOFF</item>
0320                 <item>CHECKR</item>
0321                 <item>COMMIT</item>
0322                 <item>DEFINE</item>
0323                 <item>DELETE</item>
0324                 <item>EXCEPT</item>
0325                 <item>EXTRCT</item>
0326                 <item>LOOKUP</item>
0327                 <item>READPE</item>
0328                 <item>RETURN</item>
0329                 <item>SELECT</item>
0330                 <item>SETOFF</item>
0331                 <item>SUBDUR</item>
0332                 <item>UNLOCK</item>
0333                 <item>UPDATE</item>
0334                 <item>WHENGT</item>
0335                 <item>WHENLT</item>
0336                 <item>WHENEQ</item>
0337                 <item>WHENNR</item>
0338                 <item>WHENGE</item>
0339                 <item>WHENLE</item>
0340         </list>
0341         <list name="opcodes7">
0342                 <item>DEALLOC</item>
0343                 <item>REALLOC</item>
0344         </list>
0345         <list name="freeopcodes">
0346                 <item>ACQ</item>
0347                 <item>BEGSR</item>
0348                 <item>CALLP</item>
0349                 <item>CHAIN</item>
0350                 <item>CLEAR</item>
0351                 <item>CLOSE</item>
0352                 <item>COMMIT</item>
0353                 <item>DEALLOC</item>
0354                 <item>DELETE</item>
0355                 <item>DOU</item>
0356                 <item>DOW</item>
0357                 <item>DSPLY</item>
0358                 <item>DUMP</item>
0359                 <item>ELSE</item>
0360                 <item>ELSEIF</item>
0361                 <item>ENDDO</item>
0362                 <item>ENDFOR</item>
0363                 <item>ENDIF</item>
0364                 <item>ENDMON</item>
0365                 <item>ENDSL</item>
0366                 <item>ENDSR</item>
0367                 <item>EVAL</item>
0368                 <item>EVALR</item>
0369                 <item>EXCEPT</item>
0370                 <item>EXFMT</item>
0371                 <item>EXSR</item>
0372                 <item>FEOD</item>
0373                 <item>FOR</item>
0374                 <item>FORCE</item>
0375                 <item>IF</item>
0376                 <item>IN</item>
0377                 <item>ITER</item>
0378                 <item>LEAVE</item>
0379                 <item>LEAVESR</item>
0380                 <item>MONITOR</item>
0381                 <item>NEXT</item>
0382                 <item>ON-ERROR</item>
0383                 <item>OPEN</item>
0384                 <item>OTHER</item>
0385                 <item>OUT</item>
0386                 <item>POST</item>
0387                 <item>READ</item>
0388                 <item>READC</item>
0389                 <item>READE</item>
0390                 <item>READP</item>
0391                 <item>READPE</item>
0392                 <item>REL</item>
0393                 <item>RESET</item>
0394                 <item>RETURN</item>
0395                 <item>ROLBK</item>
0396                 <item>SELECT</item>
0397                 <item>SETGT</item>
0398                 <item>SETLL</item>
0399                 <item>SORTA</item>
0400                 <item>TEST</item>
0401                 <item>UNLOCK</item>
0402                 <item>UPDATE</item>
0403                 <item>WHEN</item>
0404                 <item>WRITE</item>
0405         </list>
0406 
0407     <contexts>
0408     
0409 <!-- Start here -->
0410         <!-- Form Type -->
0411         <context name="Default" attribute="Normal Text" lineEndContext="#stay">
0412                 <RegExpr attribute="Comment" context="Comments" String="[PpOoIiHhFfDdCc ]?\*"/>
0413                 <RegExpr attribute="Directive" context="Directives" String="[PpOoIiHhFfDdCc ]?/"/>
0414                 <AnyChar attribute="Keyword" context="AnyCode" String="OoIiHhFf"/>
0415                 <AnyChar attribute="Keyword" context="D_or_P" String="DdPp"/>
0416                 <AnyChar attribute="Keyword" context="CControlLevel" String="Cc"/>
0417         </context>
0418         
0419 <!-- Calculation Specifications -->
0420         <!-- Control Level -->
0421         <context name="CControlLevel" attribute="Normal Text" lineEndContext="#pop">
0422                 <RegExpr attribute="Indicator" context="CIndicators" String="  |[Ll][0-9]|[OoLlSs][Rr]|[Aa][Nn]"/>
0423                 <RegExpr attribute="Alert"   context="CIndicators" String=".."/>
0424         </context>
0425         
0426         <!-- Indicators -->
0427         <context name="CIndicators" attribute="Normal Text" lineEndContext="#pop#pop">
0428                 <RegExpr attribute="Indicator" context="CFactor1" String="   |[ N](?:[0-9]{2}|K[A-NP-Y]|[LH][1-9]|[LM]R|RT|U[1-8]|O[VA-G])" insensitive="1"/>
0429                 <RegExpr attribute="Alert" context="CFactor1" String="..."/>
0430         </context>
0431         
0432         <!-- Factor1 -->
0433         <context name="CFactor1" attribute="Normal Text" lineEndContext="#pop#pop#pop">
0434                 <!-- TODO -->
0435                 <RegExpr attribute="Normal Text" context="FindOC" String=".{14}"/>
0436         </context>
0437         
0438         <!-- FindOpcode -->
0439       <context name="FindOC" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
0440                 <keyword attribute="Keyword" context="OC2" String="opcodes2"/>
0441                 <keyword attribute="Keyword" context="OC3" String="opcodes3"/>
0442                 <keyword attribute="Keyword" context="OC4" String="opcodes4"/>
0443                 <keyword attribute="Keyword" context="OC5" String="opcodes5"/>
0444                 <keyword attribute="Keyword" context="OC6" String="opcodes6"/>
0445                 <keyword attribute="Keyword" context="OC7" String="opcodes7"/>
0446                 <WordDetect attribute="Keyword" context="OC5" String="Z-ADD" insensitive="1"/>
0447                 <WordDetect attribute="Keyword" context="OC5" String="Z-SUB" insensitive="1"/>
0448                 <WordDetect attribute="Keyword" context="OC8" String="ON-ERR" insensitive="1"/>
0449                 <WordDetect attribute="Keyword" context="OC8" String="ON-OR" insensitive="1"/>
0450                 <StringDetect attribute="Normal Text" context="CFactor2" String="          "/>
0451                 <RegExpr attribute="Alert"   context="CFactor2" String=".{10}"/>
0452       </context>
0453 
0454       <!-- Opcodes that can or not be followed by evaluation expressions -->
0455       <context name="OC2" attribute="Normal Text" lineEndContext="Default">
0456               <StringDetect attribute="Normal Text" context="CFactor2" String="        "/>
0457       </context>
0458       <context name="OC3" attribute="Normal Text" lineEndContext="Default">
0459               <StringDetect attribute="Normal Text" context="CFactor2" String="       "/>
0460       </context>
0461       <context name="OC4" attribute="Normal Text" lineEndContext="Default">
0462               <StringDetect attribute="Normal Text" context="CFactor2" String="      "/>
0463       </context>
0464       <context name="OC5" attribute="Normal Text" lineEndContext="Default">
0465               <StringDetect attribute="Normal Text" context="CFactor2" String="     "/>
0466       </context>
0467       <context name="OC6" attribute="Normal Text" lineEndContext="Default">
0468               <StringDetect attribute="Normal Text" context="CFactor2" String="    "/>
0469       </context>
0470       <context name="OC7" attribute="Normal Text" lineEndContext="Default">
0471               <StringDetect attribute="Normal Text" context="CFactor2" String="   "/>
0472       </context>
0473       <context name="OC8" attribute="Normal Text" lineEndContext="Default">
0474               <Detect2Chars attribute="Normal Text" context="CFactor2" char=" " char1=" "/>
0475       </context>
0476       
0477       <context name="CFactor2" attribute="Normal Text" lineEndContext="Default">
0478               <DetectChar attribute="Biff" context="Biffs" char="%"/>
0479               <IncludeRules context="CommonCode" />
0480       </context>
0481  
0482       <!-- Comments -->
0483       <context name="Comments" attribute="Comment" lineEndContext="#pop">
0484         <RegExpr attribute="BoldComment" context="#stay" String="\(*(?:FIXME|TODO|NOTE:)\)*" />
0485         <AnyChar attribute="DivideComment" context="#stay" String="-="/>
0486       </context>
0487 
0488       <!-- String Constants -->
0489       <context name="StringConstants" attribute="ConstantChar" lineEndContext="#pop">
0490               <DetectChar attribute="ConstantChar" context="#pop" char="'"/>
0491       </context>
0492 
0493       <!-- Compiler Directives -->
0494       <context name="Directives" attribute="Normal Text" lineEndContext="Default">
0495               <StringDetect attribute="Directive" context="Free" String="FREE" insensitive="1"/>
0496               <StringDetect attribute="Directive" context="Exec" String="EXEC" insensitive="1"/>
0497               <keyword attribute="Directive" context="Directives2" String="directives"/>
0498       </context>
0499       <context name="Directives2" attribute="Normal Text" lineEndContext="Default">
0500               <keyword attribute="Directive" context="Directives3" String="directives2"/>
0501       </context>
0502       <context name="Directives3" attribute="Normal Text" lineEndContext="Default">
0503               <keyword attribute="Directive" context="#stay" String="directives3"/>
0504       </context>
0505 
0506       <!-- Free -->
0507       <context name="Free" attribute="Normal Text" lineEndContext="#stay">
0508               <RegExpr attribute="Directive" context="#pop" String="[POIHFDC ]?/[Ee][Nn][Dd]-[Ff][Rr][Ee][Ee]"/>
0509               <IncludeRules context="CommonCode" />
0510               <DetectChar attribute="Biff" context="Biffs" char="%"/>
0511               <Detect2Chars attribute="Comment" context="Comments" char="/" char1="/"/>
0512               <keyword attribute="Keyword" context="#stay" String="freeopcodes"/>
0513       </context>
0514       
0515       <!-- Exec -->
0516       <context name="Exec" attribute="Normal Text" lineEndContext="#stay">
0517               <RegExpr attribute="Directive" context="#pop" String="[POIHFDC ]?/[Ee][Nn][Dd]-[Ee][Xx][Ee][Cc]"/>
0518       </context>
0519       
0520       <context name="Biffs" attribute="Biff" lineEndContext="#pop">
0521               <keyword attribute="Biff" context="#pop" String="biffs"/>
0522               <RegExpr attribute="Normal Text" context="#pop" String="."/>
0523       </context>
0524 
0525       <!-- Stuff common to all code Use as Include -->
0526       <context name="CommonCode" attribute="Normal Text" lineEndContext="#stay">
0527               <IncludeRules context="ReservedWords" />
0528               <IncludeRules context="Indicators" />
0529               <DetectChar attribute="ConstantChar" context="StringConstants" char="'"/>
0530               <Float attribute="Float" context="#stay"/>
0531               <RegExpr attribute="Hex" context="#stay" String="[Xx]'[0-9a-fA-F]{2,}'"/>
0532               <Int attribute="Decimal" context="#stay"/>
0533       </context>
0534 
0535       <!-- Reserved words - Use as include -->
0536       <context name="Indicators" attribute="Normal Text" lineEndContext="#stay">
0537               <RegExpr attribute="Indicator" context="#stay" String="\*IN\(?(?:[0-9][0-9]|1P|[HL][1-9]|[LM]R|O[A-GV]|U[1-8]|K[A-NP-Y]|RT)\)?" insensitive="1"/>
0538       </context>
0539       
0540       <!-- Reserved words - Use as include -->
0541       <context name="ReservedWords" attribute="Normal Text" lineEndContext="#stay">
0542               <RegExpr attribute="Reserved" context="#stay" String="[\*U](?:DATE|MONTH|YEAR|DAY)| PAGE[1-7]?" insensitive="1"/>
0543               <!-- *ALL(X/G) *BLANKS *ON *OFF *NULL *ZERO(s) *HIVAL *LOVAL *PSSR *END *START-->
0544               <RegExpr attribute="Constant" context="#stay" String="\*(?:ALL[XG]?|BLANKS?|ON|OFF|NULL|ZEROS?|HIVAL|LOVAL|PSSR|END|START)" insensitive="1"/>
0545               <!-- Date stuff -->
0546               <RegExpr attribute="Reserved" context="#stay" String="\*(?:CDMY|CMDY|CYMD|DMY|EUR|HMS|ISO|JIS|JOB(?:RUN)?|(?:LONG)?JUL|MDY|SYS|USA|YMD|ALTSEQ|EQUATE|FILE|FTRANS|ILERPG|CRTBNDRPG|CRTRPGMOD|V[0-9]R[0-9]M[0-9])" insensitive="1"/>
0547       </context>
0548 
0549       <!-- AnyCode -->
0550       <context name="AnyCode" attribute="Normal Text" lineEndContext="#pop">
0551               <IncludeRules context="CommonCode" />
0552       </context>
0553       
0554       <!-- D -->
0555       <!-- P -->
0556       <context name="D_or_P" attribute="Normal Text" lineEndContext="#pop">
0557               <keyword attribute="Keyword" context="#stay" String="dkeywords"/>
0558               <RegExpr attribute="Reserved" context="#stay" String="\*(?:NOPASS|OMIT|VARSIZE|RIGHTADJ|STRING|TRIM)" insensitive="1"/>
0559               <DetectChar attribute="Biff" context="Biffs" char="%"/>
0560               <IncludeRules context="CommonCode" />
0561       </context>
0562       
0563     </contexts>
0564                 <itemDatas>
0565                 <itemData name="Alert"           defStyleNum="dsAlert" />
0566                 <itemData name="Normal Text"       defStyleNum="dsNormal" />
0567                 <itemData name="Keyword"           defStyleNum="dsKeyword" />
0568                 <itemData name="Biff"              defStyleNum="dsKeyword" />
0569                 <itemData name="Decimal"           defStyleNum="dsDecVal" />
0570                 <itemData name="Float"             defStyleNum="dsFloat"/>
0571                 <itemData name="Hex"               defStyleNum="dsBaseN"/>
0572                 <itemData name="ConstantChar"      defStyleNum="dsNormal" color="#DD0022" selColor="#000000" bold="0" italic="0"/>
0573                 <itemData name="Constant"          defStyleNum="dsNormal" color="#CC2222" selColor="#000000" bold="0" italic="0"/>
0574                 <itemData name="Reserved"          defStyleNum="dsNormal" color="#BB1133" selColor="#000000" bold="0" italic="0"/>
0575                 <itemData name="Indicator"         defStyleNum="dsNormal" color="#CC0000" selColor="#000000" bold="0" italic="0"/>
0576                 <itemData name="Comment"           defStyleNum="dsComment"/>
0577                 <itemData name="BoldComment"       defStyleNum="dsNormal" color="#CD853F" selColor="#808080" bold="1" italic="1"/>
0578                 <itemData name="DivideComment"     defStyleNum="dsComment" bold="1"/>
0579                 <itemData name="Directive"         defStyleNum="dsOthers"/>
0580     </itemDatas>
0581   </highlighting>
0582   <general>
0583     <keywords casesensitive="0"/>
0584     <comments>
0585       <comment name="singleLine" start="*"/>
0586     </comments>
0587   </general>
0588 </language>