<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language [
<!ENTITY integer "\b[0-9]++(?:[_](?:[0-9]++|[a-zA-Z][\w_]*))?">
<!ENTITY baseinteger "\b[bozx](?:['][0-9a-fA-F]++[']|["][0-9a-fA-F]++["])">
<!ENTITY float1 "[0-9]*+\.[0-9]++(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]++|[a-z][\w_]*))?">
<!ENTITY float2 "\b[0-9]++\.[0-9]*+(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]++|[a-z][\w_]*))?(?![a-z])">
<!ENTITY float3 "\b[0-9]++[de][+-]?[0-9]++(?:[_](?:[0-9]++|[a-z][\w_]*))?">
]>
<language name="Fortran (Fixed Format)" version="11" kateversion="5.44" section="Sources" extensions="*.f;*.F;*.for;*.FOR;*.fpp;*.FPP;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it)" license="MIT" priority="9">
<highlighting>
<list name="keywords">
<item>allocate</item>
<item>break</item>
<item>call</item>
<item>common</item>
<item>continue</item>
<item>cycle</item>
<item>deallocate</item>
<item>forall</item>
<item>where</item>
<item>elsewhere</item>
<item>equivalence</item>
<item>exit</item>
<item>external</item>
<item>for</item>
<item>go</item>
<item>goto</item>
<item>if</item>
<item>implicit</item>
<item>include</item>
<item>interface</item>
<item>intrinsic</item>
<item>namelist</item>
<item>none</item>
<item>nullify</item>
<item>operator</item>
<item>assignment</item>
<item>pause</item>
<item>procedure</item>
<item>pure</item>
<item>elemental</item>
<item>record</item>
<item>recursive</item>
<item>result</item>
<item>return</item>
<item>stop</item>
<item>to</item>
<item>use</item>
<item>only</item>
<item>entry</item>
<item>while</item>
</list>
<list name="io_functions">
<item>access</item>
<item>backspace</item>
<item>close</item>
<item>inquire</item>
<item>open</item>
<item>print</item>
<item>read</item>
<item>rewind</item>
<item>write</item>
<item>format</item>
</list>
<list name="io_keywords">
<item>unit</item>
<item>end</item>
<item>err</item>
<item>fmt</item>
<item>iostat</item>
<item>status</item>
<item>advance</item>
<item>size</item>
<item>eor</item>
</list>
<list name="open_keywords">
<item>unit</item>
<item>iostat</item>
<item>err</item>
<item>file</item>
<item>status</item>
<item>access</item>
<item>form</item>
<item>recl</item>
<item>blank</item>
<item>position</item>
<item>action</item>
<item>delim</item>
<item>pad</item>
</list>
<list name="inquire_keywords">
<item>unit</item>
<item>iostat</item>
<item>err</item>
<item>file</item>
<item>exist</item>
<item>opened</item>
<item>number</item>
<item>named</item>
<item>name</item>
<item>access</item>
<item>sequential</item>
<item>direct</item>
<item>form</item>
<item>formatted</item>
<item>unformatted</item>
<item>recl</item>
<item>nextrec</item>
<item>blank</item>
<item>position</item>
<item>action</item>
<item>read</item>
<item>write</item>
<item>readwrite</item>
<item>delim</item>
<item>pad</item>
</list>
<list name="types">
<item>parameter</item>
<item>save</item>
<item>pointer</item>
<item>public</item>
<item>private</item>
<item>target</item>
<item>allocatable</item>
<item>optional</item>
<item>sequence</item>
</list>
<list name="elemental_procs">
<item>abs</item>
<item>cabs</item>
<item>dabs</item>
<item>iabs</item>
<item>aimag</item>
<item>aint</item>
<item>dint</item>
<item>anint</item>
<item>dnint</item>
<item>ceiling</item>
<item>cmplx</item>
<item>dcmplx</item>
<item>dimag</item>
<item>floor</item>
<item>nint</item>
<item>idnint</item>
<item>int</item>
<item>idint</item>
<item>ifix</item>
<item>real</item>
<item>float</item>
<item>sngl</item>
<item>dble</item>
<item>dreal</item>
<item>aprime</item>
<item>dconjg</item>
<item>dfloat</item>
<item>ddmim</item>
<item>rand</item>
<item>modulo</item>
<item>conjg</item>
<item>dprod</item>
<item>dim</item>
<item>ddim</item>
<item>idim</item>
<item>max</item>
<item>amax0</item>
<item>amax1</item>
<item>max0</item>
<item>max1</item>
<item>dmax1</item>
<item>min</item>
<item>amin0</item>
<item>amin1</item>
<item>min0</item>
<item>min1</item>
<item>dmin1</item>
<item>mod</item>
<item>amod</item>
<item>dmod</item>
<item>sign</item>
<item>dsign</item>
<item>isign</item>
<item>acos</item>
<item>dacos</item>
<item>asin</item>
<item>dasin</item>
<item>atan</item>
<item>datan</item>
<item>atan2</item>
<item>datan2</item>
<item>cos</item>
<item>ccos</item>
<item>dcos</item>
<item>cosh</item>
<item>dcosh</item>
<item>exp</item>
<item>cexp</item>
<item>dexp</item>
<item>log</item>
<item>alog</item>
<item>dlog</item>
<item>clog</item>
<item>log10</item>
<item>alog10</item>
<item>dlog10</item>
<item>sin</item>
<item>csin</item>
<item>dsin</item>
<item>sinh</item>
<item>dsinh</item>
<item>sqrt</item>
<item>csqrt</item>
<item>dsqrt</item>
<item>tan</item>
<item>dtan</item>
<item>tanh</item>
<item>dtanh</item>
<item>achar</item>
<item>char</item>
<item>iachar</item>
<item>ichar</item>
<item>lge</item>
<item>lgt</item>
<item>lle</item>
<item>llt</item>
<item>adjustl</item>
<item>adjustr</item>
<item>index</item>
<item>len_trim</item>
<item>scan</item>
<item>verify</item>
<item>logical</item>
<item>exponent</item>
<item>fraction</item>
<item>nearest</item>
<item>rrspacing</item>
<item>scale</item>
<item>set_exponent</item>
<item>spacing</item>
<item>btest</item>
<item>iand</item>
<item>ibclr</item>
<item>ibits</item>
<item>ibset</item>
<item>ieor</item>
<item>ior</item>
<item>ishft</item>
<item>ishftc</item>
<item>not</item>
<item>mvbits</item>
<item>merge</item>
</list>
<list name="inquiry_fn">
<item>associated</item>
<item>present</item>
<item>kind</item>
<item>len</item>
<item>digits</item>
<item>epsilon</item>
<item>huge</item>
<item>maxexponent</item>
<item>minexponent</item>
<item>precision</item>
<item>radix</item>
<item>range</item>
<item>tiny</item>
<item>bit_size</item>
<item>allocated</item>
<item>lbound</item>
<item>ubound</item>
<item>shape</item>
<item>size</item>
</list>
<list name="transform_fn">
<item>repeat</item>
<item>trim</item>
<item>selected_int_kind</item>
<item>selected_real_kind</item>
<item>transfer</item>
<item>dot_product</item>
<item>matmul</item>
<item>all</item>
<item>any</item>
<item>count</item>
<item>maxval</item>
<item>minval</item>
<item>product</item>
<item>sum</item>
<item>pack</item>
<item>unpack</item>
<item>reshape</item>
<item>spread</item>
<item>cshift</item>
<item>eoshift</item>
<item>transpose</item>
<item>findloc</item>
<item>maxloc</item>
<item>minloc</item>
</list>
<list name="non_elem_subr">
<item>date_and_time</item>
<item>system_clock</item>
<item>random_number</item>
<item>random_seed</item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="default" >
<IncludeRules context="find_preprocessor" />
<IncludeRules context="find_comments" />
<IncludeRules context="find_strings" />
<IncludeRules context="find_decls" />
<IncludeRules context="find_intrinsics" />
<IncludeRules context="find_io_stmnts" />
<IncludeRules context="find_op_and_log" />
<IncludeRules context="find_numbers" />
<IncludeRules context="find_continue" />
<IncludeRules context="find_symbols" />
<IncludeRules context="find_begin_stmnts" />
<IncludeRules context="find_end_stmnts" />
<IncludeRules context="find_mid_stmnts" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_preprocessor">
<DetectChar attribute="Preprocessor" context="preprocessor" char="#" column="0"/>
<StringDetect attribute="Preprocessor" context="preprocessor" String="cDEC$" column="0"/>
<StringDetect attribute="Preprocessor" context="preprocessor" String="CDEC$" column="0"/>
</context>
<context attribute="Preprocessor" lineEndContext="#pop" name="preprocessor" />
<context attribute="Normal Text" lineEndContext="#stay" name="find_op_and_log">
<StringDetect attribute="Logical" context="#stay" String=".true." insensitive="true"/>
<StringDetect attribute="Logical" context="#stay" String=".false." insensitive="true"/>
<RegExpr attribute="Operator" context="#stay" String="\.[A-Za-z]+\."/>
<Detect2Chars attribute="Operator" context="#stay" char="=" char1="="/>
<Detect2Chars attribute="Operator" context="#stay" char="/" char1="="/>
<Detect2Chars attribute="Operator" context="#stay" char="<" char1="="/>
<Detect2Chars attribute="Operator" context="#stay" char=">" char1="="/>
<AnyChar attribute="Operator" context="#stay" String="<>%"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_comments">
<AnyChar attribute="Comment" context="comment" String="cC*" column="0"/>
<DetectChar attribute="Comment" context="comment" char="!"/>
<RegExpr attribute="Comment" context="comment" String="." column="72" />
</context>
<context attribute="Comment" lineEndContext="#pop" name="comment">
<IncludeRules context="##Comments"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_symbols">
<Detect2Chars attribute="Keyword" context="#stay" char="*" char1="*"/>
<Detect2Chars attribute="Keyword" context="#stay" char="(" char1="/"/>
<Detect2Chars attribute="Keyword" context="#stay" char="/" char1=")"/>
<AnyChar attribute="Keyword" context="#stay" String="&+-*/=?[]^{|}~"/>
<AnyChar attribute="Symbol" context="#stay" String="(),"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_continue">
<RegExpr attribute="Continuation character" context="#stay" String="^ [^0-9\s]" column="0"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="inside_func_paren">
<DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
<DetectChar attribute="Normal Text" context="#pop" char=")"/>
<IncludeRules context="find_strings" />
<IncludeRules context="find_intrinsics" />
<IncludeRules context="find_numbers" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_io_stmnts">
<RegExpr attribute="IO Function" context="find_io_paren" String="\b(?:read|write|backspace|rewind|end\s*file|close|open|inquire)\s*[(]" insensitive="true"/>
<RegExpr attribute="IO Function" context="format_stmnt" String="\bformat\s*[(]" insensitive="true"/>
<RegExpr attribute="IO Function" context="#stay" String="\bend\s*file\b" insensitive="true"/>
<keyword attribute="IO Function" context="#stay" String="io_functions"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_io_paren">
<DetectChar attribute="IO Function" context="#stay" char="*"/>
<DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
<DetectChar attribute="IO Function" context="#pop" char=")"/>
<keyword attribute="IO Function" context="#stay" String="io_keywords"/>
<keyword attribute="IO Function" context="#stay" String="inquire_keywords"/>
<keyword attribute="IO Function" context="#stay" String="open_keywords"/>
<IncludeRules context="find_strings" />
<IncludeRules context="find_intrinsics" />
<IncludeRules context="find_numbers" />
<IncludeRules context="find_symbols" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="format_stmnt">
<DetectChar attribute="IO Function" context="format_stmnt" char="("/>
<DetectChar attribute="IO Function" context="#pop" char=")"/>
<RegExpr attribute="IO Function" context="#stay" String="[0-9]*/" insensitive="true"/>
<DetectChar attribute="IO Function" context="#stay" char=":"/>
<IncludeRules context="find_strings" />
<IncludeRules context="find_symbols" />
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_begin_stmnts">
<RegExpr attribute="Keyword" context="#stay" String="\bmodule\s+procedure\b" insensitive="true"/>
<RegExpr attribute="Keyword" context="#stay" String="\b(?:subroutine|function|block\s*data|program|module)\b" insensitive="true" beginRegion="Routine"/>
<RegExpr attribute="Keyword" context="#stay" String="\b(?:then|do|select\s+case)\b" insensitive="true" beginRegion="Block"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_end_stmnts">
<RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:subroutine|function|block\s*data|program|module)\b" insensitive="true" endRegion="Routine"/>
<RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:do|if)\b" insensitive="true" endRegion="Block"/>
<RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:select|where|forall|interface)\b" insensitive="true"/>
<RegExpr attribute="Keyword" context="#stay" String="\belse\s*if\b" insensitive="true" endRegion="Block"/>
<WordDetect attribute="Keyword" context="#stay" String="end" insensitive="true" endRegion="Routine"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_mid_stmnts">
<WordDetect attribute="Keyword" context="#stay" String="else" insensitive="true" endRegion="Block" beginRegion="Block"/>
<RegExpr attribute="Keyword" context="#stay" String="\bcase(?:\s+default)?\b" insensitive="true" endRegion="Block" beginRegion="Block"/>
<WordDetect attribute="Keyword" context="#stay" String="contains" insensitive="true" endRegion="Routine" beginRegion="Routine"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_decls">
<RegExpr attribute="Data Type" context="#stay" String="\b(?:integer|real|complex)[\*]\d{1,2}|\bend\s*type\b" insensitive="true"/>
<keyword attribute="Data Type" context="#stay" String="types"/>
<WordDetect attribute="Data Type" context="#stay" String="data" firstNonSpace="true" insensitive="true"/>
<RegExpr attribute="Data Type" context="#stay" String="\bcharacter[*][0-9]+\b" insensitive="true"/>
<RegExpr attribute="Data Type" context="find_paren" String="\b(?:type|integer|real|complex|character|logical|intent|dimension)\s*[(]" insensitive="true"/>
<RegExpr attribute="Data Type" context="#stay" String="\b(?:type|integer|real|complex|character|logical|double\s*precision|intent|dimension)\b" insensitive="true"/>
<Detect2Chars attribute="Data Type" context="#stay" char=":" char1=":"/>
</context>
<context attribute="Data Type" lineEndContext="#pop" name="find_paren">
<DetectChar attribute="Data Type" context="find_paren" char="("/>
<DetectChar attribute="Data Type" context="#pop" char=")"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_intrinsics">
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Elemental Procedure" context="#stay" String="elemental_procs"/>
<keyword attribute="Inquiry Function" context="#stay" String="inquiry_fn"/>
<keyword attribute="Transformational Function" context="#stay" String="transform_fn"/>
<keyword attribute="Non elemental subroutine" context="#stay" String="non_elem_subr"/>
</context>
<context attribute="Normal Text" lineEndContext="#stay" name="find_numbers">
<RegExpr attribute="Float" context="#stay" String="&float1;|&float2;|&float3;" insensitive="true"/>
<RegExpr attribute="Decimal" context="#stay" String="&integer;|&baseinteger;"/>
</context>
<context attribute="String" lineEndContext="#stay" name="find_strings">
<DetectChar attribute="String" context="string_1" char="'"/>
<DetectChar attribute="String" context="string_2" char="""/>
</context>
<context attribute="String" lineEndContext="#stay" name="string_1" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="String" context="#pop" String="[^']*'"/>
<RegExpr attribute="Keyword" context="end_of_string" String="&\s*$"/>
<RegExpr attribute="String" context="end_of_string" String=".*(?=&\s*$)"/>
</context>
<context attribute="String" lineEndContext="#stay" name="string_2" fallthrough="true" fallthroughContext="#pop">
<RegExpr attribute="String" context="#pop" String="[^"]*""/>
<RegExpr attribute="Keyword" context="end_of_string" String="&\s*$"/>
<RegExpr attribute="String" context="end_of_string" String=".*(?=&\s*$)"/>
</context>
<context attribute="String" lineEndContext="#stay" name="end_of_string" fallthrough="true" fallthroughContext="#pop#pop">
<DetectSpaces />
<RegExpr attribute="Keyword" context="#stay" String="&\s*$"/>
<DetectChar attribute="Keyword" context="#pop" char="&" firstNonSpace="true"/>
<AnyChar attribute="Comment" context="comment" String="cC*" column="0"/>
<DetectChar attribute="Comment" context="comment" char="!" firstNonSpace="true"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Data Type" defStyleNum="dsDataType"/>
<itemData name="Decimal" defStyleNum="dsDecVal"/>
<itemData name="Float" defStyleNum="dsFloat"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="Symbol" defStyleNum="dsNormal"/>
<itemData name="Preprocessor" defStyleNum="dsOthers"/>
<itemData name="Operator" defStyleNum="dsOperator" bold="1" italic="0"/>
<itemData name="Logical" defStyleNum="dsConstant" bold="1" italic="0"/>
<itemData name="IO Function" defStyleNum="dsFunction" bold="0" italic="0"/>
<itemData name="Elemental Procedure" defStyleNum="dsBuiltIn" bold="1" italic="0"/>
<itemData name="Continuation character" defStyleNum="dsBuiltIn" bold="1" italic="0"/>
<itemData name="Inquiry Function" defStyleNum="dsFunction" bold="1" italic="1"/>
<itemData name="Transformational Function" defStyleNum="dsFunction" bold="1" italic="0"/>
<itemData name="Non elemental subroutine" defStyleNum="dsFunction" bold="1" italic="0"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name="singleLine" start="c"/>
</comments>
<keywords casesensitive="0"/>
</general>
</language>