<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="PL/I"
section="Sources"
version="2"
kateversion="5.0"
extensions="*.pli"
mimetype="text/x-pli"
priority="8"
indenter="pli"
author="Nikolay Kultashev, nkultashev@yandex.ru"
>
<highlighting>
<list name="Attributes">
<item> ALIGNED </item>
<item> AUTOMATIC </item>
<item> BACKWARDS </item>
<item> BIN </item>
<item> BINARY </item>
<item> BIT </item>
<item> BUFFERED </item>
<item> BUILTIN </item>
<item> COMPLEX </item>
<item> CONDITION </item>
<item> CONNECTED </item>
<item> CONTROLLED </item>
<item> DEC </item>
<item> DECIMAL </item>
<item> DIRECT </item>
<item> EVENT </item>
<item> EXCLUSIVE </item>
<item> EXTERNAL </item>
<item> FILE </item>
<item> FIXED </item>
<item> FLOAT </item>
<item> INPUT </item>
<item> INTERNAL </item>
<item> IRREDUCIBLE </item>
<item> KEYED </item>
<item> LIKE </item>
<item> OUTPUT </item>
<item> POINTER </item>
<item> PRINT </item>
<item> REAL </item>
<item> RECORD </item>
<item> REDUCIBLE </item>
<item> SEQUENTIAL </item>
<item> STATIC </item>
<item> STREAM </item>
<item> TASK </item>
<item> TRANSIENT </item>
<item> UNALIGNED </item>
<item> UNBUFFERED </item>
<item> UPDATE </item>
<item> VARIABLE </item>
<item> VAR </item>
<item> VARYING </item>
</list>
<list name="Keywords">
<item> A </item>
<item> ABS </item>
<item> ACOS </item>
<item> ACTIVATE </item>
<item> ADD </item>
<item> ADDR </item>
<item> ALIGNED </item>
<item> ALL </item>
<item> ALLOCATE </item>
<item> ALLOCATION </item>
<item> ANY </item>
<item> AREA </item>
<item> ASIN </item>
<item> ASMTDLI </item>
<item> ASSEMBLER </item>
<item> ATAN </item>
<item> ATAND </item>
<item> ATANH </item>
<item> ATTENTION </item>
<item> AUTOMATIC </item>
<item> B </item>
<item> BACKWARDS </item>
<item> BASED </item>
<item> BEGIN </item>
<item> BINARY </item>
<item> BINARYVALUE </item>
<item> BIT </item>
<item> BOOL </item>
<item> BUFFERED </item>
<item> BUILTIN </item>
<item> BY </item>
<item> C </item>
<item> CALL </item>
<item> CEIL </item>
<item> CHAR </item>
<item> CHARACTER </item>
<item> CHARGRAPHIC </item>
<item> CHECK </item>
<item> CLOSE </item>
<item> COBOL </item>
<item> COL </item>
<item> COLUMN </item>
<item> COMPILE </item>
<item> COMPILETIME </item>
<item> COMPLETION </item>
<item> COMPLEX </item>
<item> CONDITION </item>
<item> CONJG </item>
<item> CONNECTED </item>
<item> CONTROLLED </item>
<item> CONVERSION </item>
<item> COPY </item>
<item> COS </item>
<item> COSD </item>
<item> COSH </item>
<item> COUNT </item>
<item> COUNTER </item>
<item> CURRENTSTORAGE </item>
<item> DATA </item>
<item> DATAFIELD </item>
<item> DATE </item>
<item> DATETIME </item>
<item> DCL </item>
<item> DEACTIVATE </item>
<item> DECIMAL </item>
<item> DECLARE </item>
<item> DEF </item>
<item> DEFAULT </item>
<item> DEFINED </item>
<item> DELAY </item>
<item> DELETE </item>
<item> DESCRIPTORS </item>
<item> DIM </item>
<item> DIRECT </item>
<item> DISPLAY </item>
<item> DIVIDE </item>
<item> DO </item>
<item> E </item>
<item> EDIT </item>
<item> ELSE </item>
<item> EMPTY </item>
<item> END </item>
<item> ENDFILE </item>
<item> ENDPAGE </item>
<item> ENTRY </item>
<item> ENTRYADDR </item>
<item> ENVIRONMENT </item>
<item> ERF </item>
<item> ERFC </item>
<item> ERROR </item>
<item> EVENT </item>
<item> EXCLUSIVE </item>
<item> EXIT </item>
<item> EXP </item>
<item> EXTERNAL </item>
<item> F </item>
<item> FETCH </item>
<item> FILE </item>
<item> FINISH </item>
<item> FIXED </item>
<item> FIXEDOVERFLOW </item>
<item> FLOAT </item>
<item> FLOOR </item>
<item> FORMAT </item>
<item> FORTRAN </item>
<item> FREE </item>
<item> FROM </item>
<item> G </item>
<item> GENERIC </item>
<item> GET </item>
<item> GET-STRING </item>
<item> GO </item>
<item> GOTO </item>
<item> GO_TO </item>
<item> GRAPHIC </item>
<item> HBOUND </item>
<item> HIGH </item>
<item> IF </item>
<item> IGNORE </item>
<item> IMAG </item>
<item> IN </item>
<item> %INCLUDE </item>
<item> INCLUDE </item>
<item> INDEX </item>
<item> INIT </item>
<item> INITIAL </item>
<item> INPUT </item>
<item> INTER </item>
<item> INTERNAL </item>
<item> INTO </item>
<item> IRREDUCIBLE </item>
<item> ITEM </item>
<item> KEY </item>
<item> KEYED </item>
<item> KEYFROM </item>
<item> KEYTO </item>
<item> LABEL </item>
<item> LBOUND </item>
<item> LEAVE </item>
<item> LENGTH </item>
<item> LIKE </item>
<item> LINE </item>
<item> LINENO </item>
<item> LINESIZE </item>
<item> LIST </item>
<item> LOCATE </item>
<item> LOG </item>
<item> LOG10 </item>
<item> LOG2 </item>
<item> LOW </item>
<item> MAIN </item>
<item> MAX </item>
<item> MIN </item>
<item> MPSTR </item>
<item> MULTIPLY </item>
<item> NAME </item>
<item> NOCHARGRAPHIC </item>
<item> NOEXECOPS </item>
<item> NOLOCK </item>
<item> NOMAP </item>
<item> NOMAPIN </item>
<item> NOMAPOUT </item>
<item> NOPRINT </item>
<item> NORESCAN </item>
<item> NOTE </item>
<item> NULL </item>
<item> OFFSET </item>
<item> ON </item>
<item> ONCHAR </item>
<item> ONCODE </item>
<item> ONCOUNT </item>
<item> ONFILE </item>
<item> ONKEY </item>
<item> ONLOC </item>
<item> ONSOURCE </item>
<item> OPEN </item>
<item> OPTIONS </item>
<item> ORDER </item>
<item> OTHERWISE </item>
<item> OUTPUT </item>
<item> OVERFLOW </item>
<item> P </item>
<item> PAGE </item>
<item> PAGESIZE </item>
<item> PARMSET </item>
<item> PENDING </item>
<item> PICTURE </item>
<item> PLICANC </item>
<item> PLICKPT </item>
<item> PLIDUMP </item>
<item> PLIREST </item>
<item> PLISRTA </item>
<item> PLISRTB </item>
<item> PLISRTC </item>
<item> PLISRTD </item>
<item> PLITDLI </item>
<item> PLITEST </item>
<item> POINTER </item>
<item> POINTERADD </item>
<item> POINTERVALUE </item>
<item> POLY </item>
<item> POS </item>
<item> POSITION </item>
<item> PRECISION </item>
<item> PRINT </item>
<item> PRIORITY </item>
<item> PROC </item>
<item> PROCEDURE </item>
<item> PROCESS </item>
<item> PROD </item>
<item> PUT </item>
<item> PUT-STRING </item>
<item> R </item>
<item> RANGE </item>
<item> READ </item>
<item> REAL </item>
<item> RECORD </item>
<item> RECURSIVE </item>
<item> REDUCIBLE </item>
<item> REENTRANT </item>
<item> REFER </item>
<item> RELEASE </item>
<item> REORDER </item>
<item> REPEAT </item>
<item> REPLY </item>
<item> REREAD </item>
<item> RESCAN </item>
<item> RETCODE </item>
<item> RETURN </item>
<item> RETURNS </item>
<item> REVERT </item>
<item> REWRITE_FILE </item>
<item> SAMEKEY </item>
<item> SELECT </item>
<item> SEQUENTIAL </item>
<item> SET </item>
<item> SIGN </item>
<item> SIGNAL </item>
<item> SIN </item>
<item> SIND </item>
<item> SINH </item>
<item> SIZE </item>
<item> SKIP </item>
<item> SNAP </item>
<item> SQRT </item>
<item> STATEMENT </item>
<item> STATIC </item>
<item> STATUS </item>
<item> STOP </item>
<item> STORAGE </item>
<item> STREAM </item>
<item> STRING </item>
<item> STRINGRANGE </item>
<item> STRINGSIZE </item>
<item> SUBSCRIPTRANGE </item>
<item> SUBSTR </item>
<item> SUM </item>
<item> SYSNULL </item>
<item> SYSTEM </item>
<item> TAN </item>
<item> TAND </item>
<item> TANH </item>
<item> TASK </item>
<item> THEN </item>
<item> TIME </item>
<item> TITLE </item>
<item> TO </item>
<item> TRANSIENT </item>
<item> TRANSLATE </item>
<item> TRANSMIT </item>
<item> TRUNC </item>
<item> UNALIGNED </item>
<item> UNBUFFERED </item>
<item> UNDEFINEDFILE </item>
<item> UNDERFLOW </item>
<item> UNLOCK </item>
<item> UNSPEC </item>
<item> UNTIL </item>
<item> UPDATE </item>
<item> VALUE </item>
<item> VARIABLE </item>
<item> VARYING </item>
<item> VERIFY </item>
<item> WAIT </item>
<item> WHEN </item>
<item> WHILE </item>
<item> WRITE </item>
<item> ZERODIVIDE </item>
</list>
<list name="BuiltIn">
<item> MOD </item>
<item> ROUND </item>
<item> PLIRETC </item>
<item> PLIRETV </item>
<item> ADDR </item>
<item> CEIL </item>
<item> DATETIME </item>
<item> INDEX </item>
<item> LENGTH </item>
<item> MAX </item>
<item> MOD </item>
<item> NULL </item>
<item> PLIRETC </item>
<item> PLIRETV </item>
<item> PLISRTD </item>
<item> ROUND </item>
<item> STG </item>
<item> SUBSTR </item>
<item> ONCODE </item>
<item> ONCONDCOND </item>
<item> ONCOUNT </item>
<item> ONFILE </item>
<item> ONLOC </item>
<item> ONSUBCODE </item>
</list>
<list name="DataTypes">
<item> BIN </item>
<item> BINARY </item>
<item> BIT </item>
<item> BUILTIN </item>
<item> CHAR </item>
<item> CHARACTER </item>
<item> DEC </item>
<item> DECIMAL </item>
<item> ENTRY </item>
<item> FIXED </item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<RegExpr attribute="Comment" context="CommentW" String="^\s*/\*.*\*/\s*([0-9]{1,8})?$" beginRegion="CommentW"/>
<RegExpr attribute="Comment" context="Comment" String="/\*" beginRegion="Comment"/>
<RegExpr attribute="Comment" context="#stay" String="[0-9]{1,8}$"/> <!-- Sequence number -->
<RegExpr attribute="Comment" context="#stay" String="^1"/> <!-- Printer control char -->
<RegExpr attribute="PreProc" context="#stay" String="^\s*%"/> <!-- Preprocessor directive -->
<RegExpr attribute="Label" context="#stay" String="[#a-zA-Z][#_0-9a-zA-Z]*:"/>
<DetectChar attribute="String" context="String1" char="'"/>
<DetectChar attribute="String" context="String2" char='"'/>
<DetectChar attribute="EndOfStat" context="#stay" char=";"/>
<WordDetect attribute="Return" context="#stay" String="RETURN" insensitive="true"/>
<RegExpr attribute="DoEnd" context="#stay" String="\b(BEGIN|DO|SELECT|PROC|PROCEDURE)\b" insensitive="true" beginRegion="DoEnd"/>
<RegExpr attribute="Return" context="#stay" String="\bEND\b\s*\S+\s*;" insensitive="true" endRegion="DoEnd"/>
<RegExpr attribute="DoEnd" context="#stay" String="\bEND\b\s*;" insensitive="true" endRegion="DoEnd"/>
<RegExpr attribute="Bin" context="#stay" String="'[01]+'B"/>
<RegExpr attribute="Bin" context="#stay" String='"[01]+"B'/>
<Float attribute="Float" context="#stay"/>
<Int attribute="DecVal" context="#stay"/>
<keyword attribute="DataType" context="#stay" String="DataTypes"/>
<keyword attribute="BuiltIn" context="#stay" String="BuiltIn"/>
<keyword attribute="Attribute" context="#stay" String="Attributes"/>
<keyword attribute="Keyword" context="#stay" String="Keywords"/>
<RegExpr attribute="Identifier" context="#stay" String="[#a-zA-Z][#_0-9a-zA-Z]*"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="CommentW">
<RegExpr attribute="Comment" context="#stay" String="^\s*/\*.*\*/\s*([0-9]{8})?$"/>
<RegExpr attribute="Comment" context="#stay" String="^\s*$"/>
<RegExpr context="#pop" String="." endRegion="CommentW" lookAhead="true"/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="Comment">
<RegExpr attribute="Comment" context="#pop" String="\*/" endRegion="Comment"/>
<RegExpr attribute="Comment" context="#stay" String="."/>
</context>
<context attribute="String" lineEndContext="#stay" name="String1">
<DetectChar attribute="String" context="#pop" char="'"/>
</context>
<context attribute="String" lineEndContext="#stay" name="String2">
<DetectChar attribute="String" context="#pop" char='"'/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Attribute" defStyleNum="dsKeyword"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="DataType" defStyleNum="dsDataType"/>
<itemData name="DecVal" defStyleNum="dsDecVal"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="Bin" defStyleNum="dsBaseN"/>
<itemData name="DoEnd" defStyleNum="dsKeyword"/>
<itemData name="Label" defStyleNum="dsOthers" color="#008200" underline="true" bold="true"/>
<itemData name="EndOfStat" defStyleNum="dsRegionMarker" color="#000080"/>
<itemData name="Return" defStyleNum="dsConstant" color="#008200"/>
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Identifier" defStyleNum="dsOperator" color="#2E64FE"/>
<itemData name="PreProc" defStyleNum="dsPreprocessor" color="#008200"/>
<itemData name="BuiltIn" defStyleNum="dsFunction"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="0" />
<comments>
<!--comment name="singleLine" start="//" /-->
<comment name="multiLine" start="/*" end="*/" />
</comments>
</general>
</language>