2020-07-15 09:14:15 +01:00

647 lines
21 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2010 - Fernando Brito <email@fernandobrito.com>
Copyright (C) 2011 - Daniel Bader <bugs.bader@googlemail.com>
Credits:
Based on prolog.lang by Ignacio Casal Quinteiro <icq@gnome.org>
Cobol keywords taken from cobol.vim by Tim Pope <vimNOSPAM@tpope.info>
and the COBOL2000 (BS2000) V1.2 compiler description by Fujitsu Siemens.
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
GtkSourceView is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this library; if not, see <http://www.gnu.org/licenses/>.
-->
<language id="cobol" name="COBOL" version="2.0" _section="Source">
<metadata>
<property name="mimetype">text/x-cobol</property>
<property name="globs">*.cbl;*.cob;*.cbd;*.cdb;*.cdc</property>
<property name="line-comment-start">*</property>
</metadata>
<styles>
<style id="comment" name="Comment" map-to="def:comment"/>
<style id="statement" name="Statement" map-to="def:statement"/>
<style id="variable" name="Variable" map-to="def:type"/>
<style id="keyword" name="Keyword" map-to="def:keyword"/>
<style id="constant" name="Constant" map-to="def:constant"/>
<style id="string" name="String" map-to="def:string"/>
<style id="number" name="Number" map-to="def:decimal"/>
<style id="operator" name="Operator" map-to="def:operator"/>
<style id="error" name="Error" map-to="def:error"/>
</styles>
<default-regex-options case-sensitive="false"/>
<definitions>
<context id="line-comment" style-ref="comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
<start>^\s{0,6}\*</start>
<include>
<context ref="def:in-comment"/>
</include>
</context>
<!-- everything must start at the 8th column, except the line comment, that is indicated ONLY by a * in the 7th -->
<context id="bad-ident" style-ref="error" end-at-line-end="true" class="error" class-disabled="no-spell-check">
<start>^\s{0,6}\w</start>
</context>
<!-- http://docs.hp.com/en/65/books/lrintr.htm -->
<context id="bad-long-line" style-ref="error">
<match>.{74,}</match>
</context>
<!-- Credits: http://stackoverflow.com/questions/632475/regex-to-pick-commas-outside-of-quotes -->
<context id="bad-comment-line" style-ref="error" end-at-line-end="true" class="error" class-disabled="no-spell-check">
<start>(\*)(?=(?:[^"']|["|'][^"']*")*$)</start>
</context>
<context id="variable" style-ref="variable">
<match>\b([A-Za-z0-9_]*)\b</match>
</context>
<context id="string-double-quote" style-ref="string" end-at-line-end="true" class="string" class-disabled="no-spell-check">
<start>"</start>
<end>"</end>
</context>
<context id="string-single-quote" style-ref="string" end-at-line-end="true" class="string" class-disabled="no-spell-check">
<start>'</start>
<end>'</end>
</context>
<context id="number" style-ref="number">
<match extended="true">
\b[0-9]+(\.[0-9]+)?\b
</match>
</context>
<context id="constant" style-ref="constant">
<keyword>space</keyword>
<keyword>spaces</keyword>
<keyword>null</keyword>
<keyword>zero</keyword>
<keyword>zeroes</keyword>
<keyword>zeros</keyword>
<keyword>low-values</keyword>
<keyword>low-value</keyword>
<keyword>high-values</keyword>
<keyword>high-value</keyword>
<keyword>quotes</keyword>
<keyword>quote</keyword>
</context>
<context id="keyword" style-ref="keyword">
<keyword>accept</keyword>
<keyword>access</keyword>
<keyword>active-class</keyword>
<keyword>add</keyword>
<keyword>address</keyword>
<keyword>advancing</keyword>
<keyword>after</keyword>
<keyword>all</keyword>
<keyword>allocate</keyword>
<keyword>alphabet</keyword>
<keyword>alphabetic-lower</keyword>
<keyword>alphabetic-upper</keyword>
<keyword>alphabetic</keyword>
<keyword>alphanumeric-edited</keyword>
<keyword>alphanumeric</keyword>
<keyword>also</keyword>
<keyword>alter</keyword>
<keyword>alternate</keyword>
<keyword>and</keyword>
<keyword>any</keyword>
<keyword>anycase</keyword>
<keyword>are</keyword>
<keyword>area</keyword>
<keyword>areas</keyword>
<keyword>as</keyword>
<keyword>ascending</keyword>
<keyword>assign</keyword>
<keyword>at</keyword>
<keyword>author</keyword>
<keyword>b-and</keyword>
<keyword>b-not</keyword>
<keyword>b-or</keyword>
<keyword>b-xor</keyword>
<keyword>based</keyword>
<keyword>before</keyword>
<keyword>beginning</keyword>
<keyword>binary-char</keyword>
<keyword>binary-double</keyword>
<keyword>binary-long</keyword>
<keyword>binary-short</keyword>
<keyword>binary</keyword>
<keyword>bit</keyword>
<keyword>blank</keyword>
<keyword>block</keyword>
<keyword>boolean</keyword>
<keyword>bottom</keyword>
<keyword>by</keyword>
<keyword>case</keyword>
<keyword>cbl-ctr</keyword>
<keyword>cf</keyword>
<keyword>ch</keyword>
<keyword>character</keyword>
<keyword>characters</keyword>
<keyword>checking</keyword>
<keyword>class-id</keyword>
<keyword>class-units</keyword>
<keyword>class</keyword>
<keyword>close</keyword>
<keyword>code</keyword>
<keyword>code-set</keyword>
<keyword>col</keyword>
<keyword>collating</keyword>
<keyword>cols</keyword>
<keyword>column</keyword>
<keyword>columns</keyword>
<keyword>comma</keyword>
<keyword>commit</keyword>
<keyword>common</keyword>
<keyword>communication</keyword>
<keyword>comp-1</keyword>
<keyword>comp-2</keyword>
<keyword>comp-3</keyword>
<keyword>comp-5</keyword>
<keyword>comp</keyword>
<keyword>computational-1</keyword>
<keyword>computational-2</keyword>
<keyword>computational-3</keyword>
<keyword>computational-5</keyword>
<keyword>computational</keyword>
<keyword>compute</keyword>
<keyword>condition</keyword>
<keyword>connect</keyword>
<keyword>console</keyword>
<keyword>constant</keyword>
<keyword>contains</keyword>
<keyword>content</keyword>
<keyword>continue</keyword>
<keyword>control</keyword>
<keyword>controls</keyword>
<keyword>converting</keyword>
<keyword>copy</keyword>
<keyword>corr</keyword>
<keyword>corresponding</keyword>
<keyword>count</keyword>
<keyword>creating</keyword>
<keyword>crt</keyword>
<keyword>currency</keyword>
<keyword>current</keyword>
<keyword>cursor</keyword>
<keyword>data-pointer</keyword>
<keyword>database-exception</keyword>
<keyword>database-key-long</keyword>
<keyword>database-key</keyword>
<keyword>date-compiled</keyword>
<keyword>date-written</keyword>
<keyword>date</keyword>
<keyword>day</keyword>
<keyword>day-of-week</keyword>
<keyword>db</keyword>
<keyword>de</keyword>
<keyword>debug-contents</keyword>
<keyword>debug-item</keyword>
<keyword>debug-line</keyword>
<keyword>debug-name</keyword>
<keyword>debug-sub-1</keyword>
<keyword>debug-sub-2</keyword>
<keyword>debug-sub-3</keyword>
<keyword>debugging</keyword>
<keyword>decimal-point</keyword>
<keyword>declaratives</keyword>
<keyword>default</keyword>
<keyword>delete</keyword>
<keyword>delimited</keyword>
<keyword>delimiter</keyword>
<keyword>depending</keyword>
<keyword>descending</keyword>
<keyword>detail</keyword>
<keyword>disable</keyword>
<keyword>disc</keyword>
<keyword>disconnect</keyword>
<keyword>display</keyword>
<keyword>divide</keyword>
<keyword>division</keyword>
<keyword>down</keyword>
<keyword>duplicate</keyword>
<keyword>duplicates</keyword>
<keyword>dynamic</keyword>
<keyword>ebcdic</keyword>
<keyword>ec</keyword>
<keyword>else</keyword>
<keyword>empty</keyword>
<keyword>enable</keyword>
<keyword>end-accept</keyword>
<keyword>end-add</keyword>
<keyword>end-compute</keyword>
<keyword>end-delete</keyword>
<keyword>end-display</keyword>
<keyword>end-divide</keyword>
<keyword>end-evaluate</keyword>
<keyword>end-invoke</keyword>
<keyword>end-multiply</keyword>
<keyword>end-of-page</keyword>
<keyword>end-read</keyword>
<keyword>end-receive</keyword>
<keyword>end-return</keyword>
<keyword>end-rewrite</keyword>
<keyword>end-search</keyword>
<keyword>end-start</keyword>
<keyword>end-string</keyword>
<keyword>end-subtract</keyword>
<keyword>end-unstring</keyword>
<keyword>end-write</keyword>
<keyword>end</keyword>
<keyword>ending</keyword>
<keyword>entry</keyword>
<keyword>eo</keyword>
<keyword>eop</keyword>
<keyword>equal</keyword>
<keyword>equals</keyword>
<keyword>erase</keyword>
<keyword>error</keyword>
<keyword>escape</keyword>
<keyword>evaluate</keyword>
<keyword>every</keyword>
<keyword>exception-object</keyword>
<keyword>exception</keyword>
<keyword>exclusive</keyword>
<keyword>exit</keyword>
<keyword>extend</keyword>
<keyword>extended</keyword>
<keyword>external</keyword>
<keyword>factory</keyword>
<keyword>false</keyword>
<keyword>fd</keyword>
<keyword>fetch</keyword>
<keyword>file-control</keyword>
<keyword>filler</keyword>
<keyword>final</keyword>
<keyword>find</keyword>
<keyword>finish</keyword>
<keyword>first</keyword>
<keyword>float-extended</keyword>
<keyword>float-long</keyword>
<keyword>float-short</keyword>
<keyword>footing</keyword>
<keyword>for</keyword>
<keyword>format</keyword>
<keyword>free</keyword>
<keyword>from</keyword>
<keyword>function-id</keyword>
<keyword>function</keyword>
<keyword>generate</keyword>
<keyword>get</keyword>
<keyword>giving</keyword>
<keyword>global</keyword>
<keyword>go</keyword>
<keyword>greater</keyword>
<keyword>group-usage</keyword>
<keyword>group</keyword>
<keyword>heading</keyword>
<keyword>i-o-control</keyword>
<keyword>i-o</keyword>
<keyword>id</keyword>
<keyword>ignoring</keyword>
<keyword>in</keyword>
<keyword>including</keyword>
<keyword>index</keyword>
<keyword>indexed</keyword>
<keyword>indicate</keyword>
<keyword>inherits</keyword>
<keyword>initial</keyword>
<keyword>initialize</keyword>
<keyword>initiate</keyword>
<keyword>input</keyword>
<keyword>inspect</keyword>
<keyword>installation</keyword>
<keyword>interface</keyword>
<keyword>interface-id</keyword>
<keyword>into</keyword>
<keyword>invalid</keyword>
<keyword>is</keyword>
<keyword>just</keyword>
<keyword>justified</keyword>
<keyword>keep</keyword>
<keyword>key</keyword>
<keyword>label</keyword>
<keyword>last</keyword>
<keyword>leading</keyword>
<keyword>left</keyword>
<keyword>length</keyword>
<keyword>less</keyword>
<keyword>limit</keyword>
<keyword>limited</keyword>
<keyword>limits</keyword>
<keyword>linage</keyword>
<keyword>line</keyword>
<keyword>line-counter</keyword>
<keyword>lines</keyword>
<keyword>locale</keyword>
<keyword>lock</keyword>
<keyword>mask</keyword>
<keyword>matching</keyword>
<keyword>member</keyword>
<keyword>members</keyword>
<keyword>membership</keyword>
<keyword>memory</keyword>
<keyword>merge</keyword>
<keyword>message</keyword>
<keyword>method</keyword>
<keyword>method-id</keyword>
<keyword>minus</keyword>
<keyword>mode</keyword>
<keyword>modify</keyword>
<keyword>modules</keyword>
<keyword>more-labels</keyword>
<keyword>move</keyword>
<keyword>multiple</keyword>
<keyword>multiply</keyword>
<keyword>national-edited</keyword>
<keyword>national</keyword>
<keyword>native</keyword>
<keyword>negative</keyword>
<keyword>nested</keyword>
<keyword>next</keyword>
<keyword>no</keyword>
<keyword>not</keyword>
<keyword>number</keyword>
<keyword>numeric-edited</keyword>
<keyword>numeric</keyword>
<keyword>object-computer</keyword>
<keyword>object-reference</keyword>
<keyword>object</keyword>
<keyword>occurence</keyword>
<keyword>occurs</keyword>
<keyword>of</keyword>
<keyword>off</keyword>
<keyword>omitted</keyword>
<keyword>on</keyword>
<keyword>open</keyword>
<keyword>optional</keyword>
<keyword>options</keyword>
<keyword>or</keyword>
<keyword>order</keyword>
<keyword>organization</keyword>
<keyword>other</keyword>
<keyword>output</keyword>
<keyword>overflow</keyword>
<keyword>override</keyword>
<keyword>owner</keyword>
<keyword>packed-decimal</keyword>
<keyword>padding</keyword>
<keyword>page-counter</keyword>
<keyword>page</keyword>
<keyword>permanent</keyword>
<keyword>pf</keyword>
<keyword>ph</keyword>
<keyword>pic</keyword>
<keyword>picture</keyword>
<keyword>plus</keyword>
<keyword>pointer</keyword>
<keyword>position</keyword>
<keyword>positive</keyword>
<keyword>present</keyword>
<keyword>print-switch</keyword>
<keyword>printing</keyword>
<keyword>prior</keyword>
<keyword>proceed</keyword>
<keyword>program-begin</keyword>
<keyword>program-done</keyword>
<keyword>program-id</keyword>
<keyword>program-pointer</keyword>
<keyword>program</keyword>
<keyword>property</keyword>
<keyword>protected</keyword>
<keyword>prototype</keyword>
<keyword>purge</keyword>
<keyword>raise</keyword>
<keyword>raising</keyword>
<keyword>random</keyword>
<keyword>rd</keyword>
<keyword>read</keyword>
<keyword>ready</keyword>
<keyword>realm-name</keyword>
<keyword>realm</keyword>
<keyword>receive</keyword>
<keyword>record</keyword>
<keyword>recording</keyword>
<keyword>records</keyword>
<keyword>redefines</keyword>
<keyword>reel</keyword>
<keyword>reference</keyword>
<keyword>relative</keyword>
<keyword>release</keyword>
<keyword>remainder</keyword>
<keyword>removal</keyword>
<keyword>renames</keyword>
<keyword>repeated</keyword>
<keyword>replace</keyword>
<keyword>replacing</keyword>
<keyword>report</keyword>
<keyword>reporting</keyword>
<keyword>reports</keyword>
<keyword>repository</keyword>
<keyword>rerun</keyword>
<keyword>reserve</keyword>
<keyword>reset</keyword>
<keyword>result</keyword>
<keyword>resume</keyword>
<keyword>retaining</keyword>
<keyword>retrieval</keyword>
<keyword>retry</keyword>
<keyword>return</keyword>
<keyword>returning</keyword>
<keyword>reversed</keyword>
<keyword>rewind</keyword>
<keyword>rewrite</keyword>
<keyword>rf</keyword>
<keyword>rh</keyword>
<keyword>right</keyword>
<keyword>rollback</keyword>
<keyword>rounded</keyword>
<keyword>run</keyword>
<keyword>same</keyword>
<keyword>screen</keyword>
<keyword>sd</keyword>
<keyword>search</keyword>
<keyword>section</keyword>
<keyword>security</keyword>
<keyword>segment-limit</keyword>
<keyword>select</keyword>
<keyword>selective</keyword>
<keyword>self</keyword>
<keyword>send</keyword>
<keyword>sentence</keyword>
<keyword>separate</keyword>
<keyword>sequence</keyword>
<keyword>sequential</keyword>
<keyword>set-selection</keyword>
<keyword>set</keyword>
<keyword>sets</keyword>
<keyword>sharing</keyword>
<keyword>sign</keyword>
<keyword>size</keyword>
<keyword>sort-merge</keyword>
<keyword>sort-tape</keyword>
<keyword>sort-tapes</keyword>
<keyword>sort</keyword>
<keyword>sorted</keyword>
<keyword>source-computer</keyword>
<keyword>source</keyword>
<keyword>sources</keyword>
<keyword>special-names</keyword>
<keyword>standard-1</keyword>
<keyword>standard-2</keyword>
<keyword>standard</keyword>
<keyword>start</keyword>
<keyword>status</keyword>
<keyword>stop</keyword>
<keyword>store</keyword>
<keyword>string</keyword>
<keyword>sub-schema</keyword>
<keyword>subtract</keyword>
<keyword>sum</keyword>
<keyword>super</keyword>
<keyword>suppress</keyword>
<keyword>suppressing</keyword>
<keyword>symbolic</keyword>
<keyword>sync</keyword>
<keyword>synchronized</keyword>
<keyword>system-default</keyword>
<keyword>system</keyword>
<keyword>table</keyword>
<keyword>tally</keyword>
<keyword>tallying</keyword>
<keyword>tape</keyword>
<keyword>tapes</keyword>
<keyword>tenant</keyword>
<keyword>terminal</keyword>
<keyword>terminate</keyword>
<keyword>test</keyword>
<keyword>than</keyword>
<keyword>then</keyword>
<keyword>through</keyword>
<keyword>thru</keyword>
<keyword>time</keyword>
<keyword>times</keyword>
<keyword>to</keyword>
<keyword>top</keyword>
<keyword>trailing</keyword>
<keyword>true</keyword>
<keyword>try</keyword>
<keyword>type</keyword>
<keyword>typedef</keyword>
<keyword>unit</keyword>
<keyword>units</keyword>
<keyword>universal</keyword>
<keyword>unlock</keyword>
<keyword>unstring</keyword>
<keyword>until</keyword>
<keyword>up</keyword>
<keyword>update</keyword>
<keyword>upon</keyword>
<keyword>usage-mode</keyword>
<keyword>usage</keyword>
<keyword>use</keyword>
<keyword>user-default</keyword>
<keyword>using</keyword>
<keyword>val-status</keyword>
<keyword>valid</keyword>
<keyword>validate-status</keyword>
<keyword>validate</keyword>
<keyword>value</keyword>
<keyword>values</keyword>
<keyword>varying</keyword>
<keyword>via</keyword>
<keyword>when</keyword>
<keyword>with</keyword>
<keyword>within</keyword>
<keyword>words</keyword>
<keyword>write</keyword>
</context>
<context id="section-name" style-ref="keyword">
<keyword>configuration</keyword>
<keyword>input-output</keyword>
<keyword>file</keyword>
<keyword>working-storage</keyword>
<keyword>local-storage</keyword>
<keyword>linkage</keyword>
</context>
<context id="division-name" style-ref="keyword">
<keyword>identification</keyword>
<keyword>environment</keyword>
<keyword>data</keyword>
<keyword>procedure</keyword>
</context>
<context id="call" style-ref="statement">
<keyword>end-call</keyword>
<keyword>call</keyword>
<keyword>cancel</keyword>
<keyword>goback</keyword>
<keyword>end-perform</keyword>
<keyword>perform</keyword>
<keyword>invoke</keyword>
<keyword>end-if</keyword>
<keyword>if</keyword>
</context>
<context id="cobol" class="no-spell-check">
<include>
<context ref="constant"/>
<context ref="keyword"/>
<context ref="call"/>
<context ref="division-name"/>
<context ref="section-name"/>
<context ref="line-comment"/>
<context ref="bad-ident"/>
<context ref="bad-comment-line"/>
<context ref="bad-long-line"/>
<context ref="string-double-quote"/>
<context ref="string-single-quote"/>
<context ref="number"/>
<context ref="variable"/>
</include>
</context>
</definitions>
</language>