*
* This file contains the THE Language Definition for COBOL
* It is based heavily on Kedit's KLD file format.
*
* Name = COBOL
*
:case
 ignore
:number
 cobol
:identifier
 [a-zA-Z0-9] [-_a-zA-Z0-9] [a-zA-Z0-9]
:string
 single
 double
:comment
 line   * column 7
 line   / column 7
 line   D column 7
:label
* treat any non-keyword identifier starting in column 8 as a label
 column 8
:match
 (     )
 exec  end-exec
:keyword
 accept
 access
 acquire
 add
 address
 advancing
 after
 all
 allowing
 alphabet
 alphabetic
 alphabetic-lower
 alphabetic-upper
 alphanumeric
 alphanumeric-edited
 also
 alter
 alternate
 and
 any
 apply
 are
 area
 area-value
 areas
 arithmetic
 ascending
 assign
 at
 author
 auto
 auto-skip
 automatic
 b-and
 b-exor
 b-less
 b-not
 b-or
 background-color
 background-colour
 backward
 basis
 beep
 before
 beginning
 bell
 binary
 bit
 bits
 blank
 blink
 block
 boolean
 bottom
 by
 call
 cancel
 cbl
 cd
 cf
 ch
 chain
 chaining
 changed
 character
 characters
 class
 clock-units
 close
 cobol
 code
 code-set
 col
 collating
 color
 column
 com-reg
 comma
 command-line
 commit
 commitment
 common
 communication
 comp
 comp-x
 comp-0
 comp-1
 comp-2
 comp-3
 comp-4
 comp-5
 comp-6
 comp-7
 comp-8
 comp-9
 computational
 computational-x
 computational-0
 computational-1
 computational-2
 computational-3
 computational-4
 computational-5
 computational-6
 computational-7
 computational-8
 computational-9
 compute
 configuration
 connect
 console
 contained
 contains
 content
 continue
 control
 control-area
 controls
 converting
 copy
 corr
 corresponding
 count
 crt
 crt-under
 currency
 current
 cursor
 cycle
 data
 date
 date-compiled
 date-written
 day
 day-of-week
 db
 db-access-control-key
 db-data-name
 db-exception
 db-format-name
 db-record-name
 db-set-name
 db-status
 dbcs
 de
 debug-contents
 debug-item
 debug-line
 debug-name
 debug-sub-1
 debug-sub-2
 debug-sub-3
 debugging
 decimal-point
 declaratives
 default
 delete
 delimited
 delimiter
 depending
 descending
 destination
 detail
 disable
 disconnect
 disk
 display
 display-1
 display-2
 display-3
 display-4
 display-5
 display-6
 display-7
 display-8
 display-9
 divide
 division
 down
 drop
 duplicate
 duplicates
 dynamic
 egcs
 egi
 else
 emi
 empty
 empty-check
 enable
 end
 end-accept
 end-add
 end-call
 end-compute
 end-delete
 end-disable
 end-divide
 end-enable
 end-evaluate
 end-if
 end-multiply
 end-of-page
 end-perform
 end-read
 end-receive
 end-return
 end-rewrite
 end-search
 end-send
 end-start
 end-string
 end-subtract
 end-transceive
 end-unstring
 end-write
 ending
 enter
 entry
 environment
 eop
 erase
 error
 escape
 esi
 evaluate
 every
 exact
 exceeds
 exception
 excess-3
 exclusive
 execute
 exhibit
 exit
 extend
 external
 externally-described-key
 false
 fd
 fetch
 file
 file-control
 file-id
 filler
 final
 find
 finish
 first
 fixed
 footing
 for
 foreground-color
 foreground-colour
 form
 format
 free
 from
 full
 function
 generate
 get
 giving
 global
 go
 goback
 group
 heading
 highlight
 i-o
 i-o-control
 id
 identification
 if
 in
 index
 index-1
 index-2
 index-3
 index-4
 index-5
 index-6
 index-7
 index-8
 index-9
 indexed
 indic
 indicate
 indicator
 indicators
 initial
 initialize
 initiate
 input
 input-output
 insert
 inspect
 installation
 into
 invalid
 japanese
 just
 justified
 kanji
 keep
 kept
 key
 keyboard
 label
 last
 ld
 leading
 left
 left-justify
 length
 length-check
 like
 limit
 limits
 linage
 linage-counter
 line
 line-counter
 lines
 linkage
 locally
 lock
 manual
 member
 memory
 merge
 message
 mode
 modified
 modify
 modules
 more-labels
 move
 multiple
 multiply
 name
 native
 negative
 next
 no-echo
 no
 none
 normal
 null
 nulls
 number
 numeric
 numeric-edited
 object-computer
 occurs
 of
 off
 omitted
 on
 only
 open
 optional
 or
 order
 organization
 other
 output
 overflow
 owner
 packed-decimal
 padding
 page
 page-counter
 palette
 paragraph
 password
 perform
 pf
 ph
 pic
 picture
 plus
 pointer
 position
 positive
 present
 previous
 print-switch
 printer
 printer-1
 printing
 prior
 procedure
 procedures
 proceed
 process
 processing
 program
 program-id
 prompt
 protected
 purge
 queue
 quote
 quotes
 random
 range
 rd
 read
 ready
 realm
 receive
 reconnect
 record
 record-name
 recording
 records
 redefines
 reel
 reference
 references
 relation
 relative
 release
 reload
 remainder
 removal
 renames
 repeated
 replace
 replacing
 report
 reporting
 reports
 required
 rerun
 reserve
 reset
 retaining
 retrieval
 return
 return-code
 reverse-video
 reversed
 rewind
 rewrite
 rf
 rh
 right
 right-justify
 rollback
 rolling
 rounded
 run
 same
 screen
 sd
 search
 section
 secure
 security
 segment
 segment-limit
 select
 send
 sentence
 separate
 sequence
 sequential
 service
 session-id
 set
 shared
 shift-in
 shift-out
 sign
 size
 sort
 sort-control
 sort-core-size
 sort-file-size
 sort-merge
 sort-message
 sort-mode-size
 sort-return
 source
 source-computer
 space-fill
 special-names
 standard
 standard-1
 standard-2
 standard-3
 standard-4
 start
 starting
 status
 stop
 store
 string
 sub-queue-1
 sub-queue-2
 sub-queue-3
 sub-schema
 subfile
 subprogram
 subtract
 sum
 suppress
 switch
 switch-1
 switch-2
 switch-3
 switch-4
 switch-5
 switch-6
 switch-7
 switch-8
 symbolic
 sync
 synchronized
 table
 tally
 tallying
 tape
 tenant
 terminal
 terminate
 test
 text
 than
 then
 through
 thru
 time
 timeout
 times
 title
 to
 top
 trace
 trailing
 trailing-sign
 transaction
 transceive
 true
 type
 underline
 unequal
 unit
 unlock
 unstring
 until
 up
 update
 upon
 usage
 usage-mode
 use
 user
 using
 valid
 validate
 value
 values
 variable
 varying
 wait
 when
 when-compiled
 with
 within
 words
 working-storage
 write
 write-only
 zero-fill
* Constants
 high-values  alternate 1
 high-value   alternate 1
 low-values   alternate 1
 low-value    alternate 1
 spaces       alternate 1
 space        alternate 1
 zeroes       alternate 1
 zeros        alternate 1
 zero         alternate 1
* Comparision
 equals
 equal
 greater
 less
 is
 not
* Listing Control
 eject    alternate 2
 skip1    alternate 2
 skip2    alternate 2
 skip3    alternate 2
* CICS, SQL Preprocessor
 exec
 end-exec
 cics
 sql
:postcompare
 text =
 text <
 text >
:column
 exclude 1  6
 exclude 73 *
