;ELC   
;;; compiled by nobody@localhost on Wed Mar  7 23:51:21 2001
;;; from file /usr/home/lib/emacs/lisp/rexx-mode.el
;;; emacs version 19.34.1.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`rexx-mode.el' was compiled for Emacs 19.29 or later"))


(provide (quote rexx-mode))
#@28 REXX source level debugger
(autoload (quote rexx-debug) "rexx-debug" '(#$ . 496) t)
#@55 *This variable contains the indentation in rexx-mode.
(defconst rexx-indent 2 (#$ . -586))
#@75 *This variable indicates the relative position of the "end" in REXX mode.
(defconst rexx-end-indent 0 (#$ . -683))
#@70 *This variable indicates how far a continued line shall be intended.
(defconst rexx-cont-indent 2 (#$ . -804))
#@85 *This variable gives the desired comment column 
for comments to the right of text.
(defconst rexx-comment-col 32 (#$ . -921))
#@145 *Non-nil means TAB in REXX mode should always reindent the current line,
regardless of where in the line point is when the TAB command is used.
(defconst rexx-tab-always-indent t (#$ . -1055))
#@84 *Regular expression for parsing lines which shall be followed by
a extra indention
(defconst rexx-special-regexp ".*\\(,\\|then\\|else\\)[ 	]*\\(/\\*.*\\*/\\)?[ 	]*$" (#$ . -1254))
#@23 Keymap for rexx-mode.
(defvar rexx-mode-map nil (#$ . 1441))
(byte-code "„ Á ÂÃÄ#ˆÂÅÆ#ˆÂÇÈ#ˆÂÉÊ#ˆÁ‡" [rexx-mode-map make-sparse-keymap define-key "	" rexx-indent-command "" backward-delete-char-untabify "" rexx-find-matching-do "" rexx-debug] 4)
#@43 Syntax table in use in REXX-mode buffers.
(defvar rexx-mode-syntax-table nil (#$ . 1705))
(byte-code "„O Á ÂÃÄ#ˆÂÅÆ#ˆÂÇÈ#ˆÂÉÊ#ˆÂËÊ#ˆÂÌÊ#ˆÂÍÊ#ˆÂÎÊ#ˆÂÏÊ#ˆÂÐÊ#ˆÂÑÊ#ˆÂÒÓ#ˆÁ‡" [rexx-mode-syntax-table make-syntax-table modify-syntax-entry 92 "\\" 47 ". 14" 42 ". 23" 43 "." 45 61 37 60 62 38 124 39 "\""] 4)
#@44 *Abbrev table in use in rexx-mode buffers.
(defvar rexx-mode-abbrev-table nil (#$ . -2027))
(byte-code "„	 ÁÀÂ\"ˆÁ‡" [rexx-mode-abbrev-table define-abbrev-table (("address" "ADDRESS" rexx-check-expansion 0) ("arg" "ARG" rexx-check-expansion 0) ("break" "BREAK" rexx-check-expansion 0) ("call" "CALL" rexx-check-expansion 0) ("do" "DO" rexx-check-expansion 0) ("drop" "DROP" rexx-check-expansion 0) ("echo" "ECHO" rexx-check-expansion 0) ("else" "ELSE" rexx-check-expansion 0) ("end" "END" rexx-check-expansion 0) ("exit" "EXIT" rexx-check-expansion 0) ("if" "IF" rexx-check-expansion 0) ("interpret" "INTERPRET" rexx-check-expansion 0) ("iterate" "ITERATE" rexx-check-expansion 0) ("leave" "LEAVE" rexx-check-expansion 0) ("nop" "NOP" rexx-check-expansion 0) ("numeric" "NUMERIC" rexx-check-expansion 0) ("options" "OPTIONS" rexx-check-expansion 0) ("otherwise" "OTHERWISE" rexx-check-expansion 0) ("parse" "PARSE" rexx-check-expansion 0) ("procedure" "PROCEDURE" rexx-check-expansion 0) ("pull" "PULL" rexx-check-expansion 0) ("push" "PUSH" rexx-check-expansion 0) ("queue" "QUEUE" rexx-check-expansion 0) ("return" "RETURN" rexx-check-expansion 0) ("say" "SAY" rexx-check-expansion 0) ("select" "SELECT" rexx-check-expansion 0) ("shell" "SHELL" rexx-check-expansion 0) ("signal" "SIGNAL" rexx-check-expansion 0) ("then" "THEN" rexx-check-expansion 0) ("trace" "TRACE" rexx-check-expansion 0) ("upper" "UPPER" rexx-check-expansion 0) ("when" "WHEN" rexx-check-expansion 0) ("value" "VALUE" rexx-check-expansion 0) ("to" "TO" rexx-check-expansion 0) ("by" "BY" rexx-check-expansion 0) ("for" "FOR" rexx-check-expansion 0) ("forever" "FOREVER" rexx-check-expansion 0) ("while" "WHILE" rexx-check-expansion 0) ("until" "UNTIL" rexx-check-expansion 0) ("form" "FORM" rexx-check-expansion 0) ("digits" "DIGITS" rexx-check-expansion 0) ("fuzz" "FUZZ" rexx-check-expansion 0) ("scientific" "SCIENTIFIC" rexx-check-expansion 0) ("engineering" "ENGINEERING" rexx-check-expansion 0) ("failat" "FAILAT" rexx-check-expansion 0) ("prompt" "PROMPT" rexx-check-expansion 0) ("results" "RESULTS" rexx-check-expansion 0) ("upper" "UPPER" rexx-check-expansion 0) ("external" "EXTERNAL" rexx-check-expansion 0) ("source" "SOURCE" rexx-check-expansion 0) ("with" "WITH" rexx-check-expansion 0) ("command" "COMMAND" rexx-check-expansion 0) ("function" "FUNCTION" rexx-check-expansion 0) ("var" "VAR" rexx-check-expansion 0) ("version" "VERSION" rexx-check-expansion 0) ("expose" "EXPOSE" rexx-check-expansion 0) ("on" "ON" rexx-check-expansion 0) ("off" "OFF" rexx-check-expansion 0) ("abbrev" "ABBREV" rexx-check-expansion 0) ("abs" "ABS" rexx-check-expansion 0) ("addlib" "ADDLIB" rexx-check-expansion 0) ("b2c" "B2C" rexx-check-expansion 0) ("bitand" "BITAND" rexx-check-expansion 0) ("bitchg" "BITCHG" rexx-check-expansion 0) ("bitclr" "BITCLR" rexx-check-expansion 0) ("bitcomp" "BITCOMP" rexx-check-expansion 0) ("bitor" "BITOR" rexx-check-expansion 0) ("bittst" "BITTST" rexx-check-expansion 0) ("bitset" "BITSET" rexx-check-expansion 0) ("c2b" "C2B" rexx-check-expansion 0) ("c2d" "C2D" rexx-check-expansion 0) ("c2x" "C2X" rexx-check-expansion 0) ("center" "CENTER" rexx-check-expansion 0) ("centre" "CENTRE" rexx-check-expansion 0) ("close" "CLOSE" rexx-check-expansion 0) ("compress" "COMPRESS" rexx-check-expansion 0) ("compare" "COMPARE" rexx-check-expansion 0) ("copies" "COPIES" rexx-check-expansion 0) ("d2c" "D2C" rexx-check-expansion 0) ("datatype" "DATATYPE" rexx-check-expansion 0) ("delstr" "DELSTR" rexx-check-expansion 0) ("delword" "DELWORD" rexx-check-expansion 0) ("eof" "EOF" rexx-check-expansion 0) ("errortext" "ERRORTEXT" rexx-check-expansion 0) ("exists" "EXISTS" rexx-check-expansion 0) ("export" "EXPORT" rexx-check-expansion 0) ("freespace" "FREESPACE" rexx-check-expansion 0) ("getclip" "GETCLIP" rexx-check-expansion 0) ("getspace" "GETSPACE" rexx-check-expansion 0) ("hash" "HASH" rexx-check-expansion 0) ("import" "IMPORT" rexx-check-expansion 0) ("index" "INDEX" rexx-check-expansion 0) ("insert" "INSERT" rexx-check-expansion 0) ("lastpos" "LASTPOS" rexx-check-expansion 0) ("left" "LEFT" rexx-check-expansion 0) ("length" "LENGTH" rexx-check-expansion 0) ("max" "MAX" rexx-check-expansion 0) ("min" "MIN" rexx-check-expansion 0) ("open" "OPEN" rexx-check-expansion 0) ("overlay" "OVERLAY" rexx-check-expansion 0) ("pos" "POS" rexx-check-expansion 0) ("pragma" "PRAGMA" rexx-check-expansion 0) ("random" "RANDOM" rexx-check-expansion 0) ("randu" "RANDU" rexx-check-expansion 0) ("readch" "READCH" rexx-check-expansion 0) ("readln" "READLN" rexx-check-expansion 0) ("remlib" "REMLIB" rexx-check-expansion 0) ("reverse" "REVERSE" rexx-check-expansion 0) ("right" "RIGHT" rexx-check-expansion 0) ("seek" "SEEK" rexx-check-expansion 0) ("setclip" "SETCLIP" rexx-check-expansion 0) ("show" "SHOW" rexx-check-expansion 0) ("sign" "SIGN" rexx-check-expansion 0) ("space" "SPACE" rexx-check-expansion 0) ("storage" "STORAGE" rexx-check-expansion 0) ("strip" "STRIP" rexx-check-expansion 0) ("substr" "SUBSTR" rexx-check-expansion 0) ("subword" "SUBWORD" rexx-check-expansion 0) ("symbol" "SYMBOL" rexx-check-expansion 0) ("time" "TIME" rexx-check-expansion 0) ("trace" "TRACE" rexx-check-expansion 0) ("translate" "TRANSLATE" rexx-check-expansion 0) ("trim" "TRIM" rexx-check-expansion 0) ("verify" "VERIFY" rexx-check-expansion 0) ("word" "WORD" rexx-check-expansion 0) ("wordindex" "WORDINDEX" rexx-check-expansion 0) ("wordlength" "WORDLENGTH" rexx-check-expansion 0) ("words" "WORDS" rexx-check-expansion 0) ("writech" "WRITECH" rexx-check-expansion 0) ("writeln" "WRITELN" rexx-check-expansion 0) ("x2c" "X2C" rexx-check-expansion 0) ("xrange" "XRANGE" rexx-check-expansion 0) ("allocmem" "ALLOCMEM" rexx-check-expansion 0) ("baddr" "BADDR" rexx-check-expansion 0) ("bitxor" "BITXOR" rexx-check-expansion 0) ("break_c" "BREAK_C" rexx-check-expansion 0) ("break_d" "BREAK_D" rexx-check-expansion 0) ("break_e" "BREAK_E" rexx-check-expansion 0) ("break_f" "BREAK_F" rexx-check-expansion 0) ("cache" "CACHE" rexx-check-expansion 0) ("closeport" "CLOSEPORT" rexx-check-expansion 0) ("d2x" "D2X" rexx-check-expansion 0) ("date" "DATA" rexx-check-expansion 0) ("delay" "DELAY" rexx-check-expansion 0) ("delete" "DELETE" rexx-check-expansion 0) ("error" "ERROR" rexx-check-expansion 0) ("failure" "FAILURE" rexx-check-expansion 0) ("find" "FIND" rexx-check-expansion 0) ("forbid" "FORBID" rexx-check-expansion 0) ("freemem" "FREEMEM" rexx-check-expansion 0) ("getarg" "GETARG" rexx-check-expansion 0) ("getpkt" "GETPKT" rexx-check-expansion 0) ("halt" "HALT" rexx-check-expansion 0) ("ioerr" "IOERR" rexx-check-expansion 0) ("lines" "LINES" rexx-check-expansion 0) ("makedir" "MAKEDIR" rexx-check-expansion 0) ("next" "NEXT" rexx-check-expansion 0) ("novalue" "NOVALUE" rexx-check-expansion 0) ("null" "NULL" rexx-check-expansion 0) ("offset" "OFFSET" rexx-check-expansion 0) ("openport" "OPENPORT" rexx-check-expansion 0) ("permit" "PERMIT" rexx-check-expansion 0) ("rename" "RENAME" rexx-check-expansion 0) ("reply" "REPLY" rexx-check-expansion 0) ("showdir" "SHOWDIR" rexx-check-expansion 0) ("showlist" "SHOWLIST" rexx-check-expansion 0) ("sourceline" "SOURCELINE" rexx-check-expansion 0) ("statef" "STATEF" rexx-check-expansion 0) ("syntax" "SYNTAX" rexx-check-expansion 0) ("trunc" "TRUNC" rexx-check-expansion 0) ("typepkt" "TYPEPKT" rexx-check-expansion 0) ("waitpkt" "WAITPKT" rexx-check-expansion 0) ("x2d" "X2D" rexx-check-expansion 0))] 3)
#@41 Expressions to highlight in V code mode
(defvar rexx-font-lock-keywords nil (#$ . 9496))
#@49 Level 1 expressions to highlight in V code mode
(defvar rexx-font-lock-keywords-1 nil (#$ . 9591))
#@49 Level 2 expressions to highlight in V code mode
(defvar rexx-font-lock-keywords-2 nil (#$ . 9696))
#@49 Level 3 expressions to highlight in V code mode
(defvar rexx-font-lock-keywords-3 nil (#$ . 9801))
(byte-code "ÀÂ	ÃÄÅÆÇÈ°ÉDÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜ°ÝDD\"ÂßàDáâDD\"#$$À‡" [nil rexx-font-lock-keywords-1 append "\\<\\(a\\(ddress\\|rg\\)\\|break\\|call\\|d\\(o\\|rop\\)\\|" "e\\(cho\\|lse\\|nd\\|xit\\)\\|i\\(f\\|nterpret\\terate\\)\\|" "forever\\|leave\\|n\\(op\\|umeric\\)\\|o\\(ptions\\|therwise\\)\\|" "p\\(arse\\|rocedure\\|u\\(sh\\|ll\\)\\)\\|queue\\|return\\|" "s\\(ay\\|elect\\|hell\\|ignal\\)\\|t\\(hen\\|o\\|race\\)\\|" "u\\(ntil\\|pper\\)\\|wh\\(en\\|ile\\)\\)\\>" (1 font-lock-keyword-face nil) "\\<\\(" "a\\(b\\(brev\\|s\\)\\|dd\\(lib\\|ress\\)\\)\\|" "b\\(2c\\|it\\(c\\(hg\\|lr\\|omp\\)\\|or\\|set\\|tst\\|xor\\)\\)\\|" "c\\(2\\(b\\|d\\|x\\)\\|ent\\(re\\|er\\)\\|" "lose\\|o\\(mp\\(are\\|ress\\)\\|pies\\)\\)\\|" "d\\(at\\(atype\\|e\\)\\|el\\(str\\|word\\)\\|igits\\)\\|" "e\\(of\\|rrortext\\|x\\(port\\|ists\\)\\)\\|" "f\\(orm\\|reespace\\|uzz\\)\\|get\\(clip\\|space\\)\\|hash\\|" "i\\(mport\\|n\\(dex\\|sert\\)\\)\\|" "l\\(astpos\\|e\\(ft\\|ngth\\)\\|ines\\)\\|" "m\\(ax\\|in\\)\\|o\\(ffset\\|pen\\|verlay\\)\\|p\\(os\\|ragma\\)\\|" "r\\(and\\(om\\|u\\)\\|e\\(ad\\(ch\\|ln\\)\\|mlib\\|verse\\)\\|ight\\)\\|" "s\\(e\\(ek\\|tclip\\)\\|how\\|ign\\|ourceline||pace\\|" "t\\(\\orage\\|rip\\)\\|ub\\(str\\|word\\)\\|ymbol\\)\\|" "t\\(ime\\|\\(r\\(a\\(ce\\|nslate\\)\\|im\\|unc\\)\\)\\)\\|" "upper\\|v\\(alue\\|erify\\)\\|" "w\\(ord\\(\\|index\\lengh\\|s\\)\\|rite\\(ch\\|ln\\)\\)\\|" "x\\(2c\\|range\\)" "\\)\\>" (1 font-lock-function-name-face nil) rexx-font-lock-keywords-2 "address *\\(\\<\\w*\\>\\)" (1 font-lock-variable-name-face nil) "^\\(\\<.*\\>\\):" (1 font-lock-type-face nil) rexx-font-lock-keywords-3 rexx-font-lock-keywords] 22)
#@1633 Major mode for editing REXX code.
\{rexx-mode-map}

Variables controlling indentation style:
 rexx-indent
	The basic indentation for do-blocks.
 rexx-end-indent
	The relative offset of the "end" statement. 0 places it in the
	same column as the statements of the block. Setting it to the same
	value as rexx-indent places the "end" under the do-line.
 rexx-cont-indent
	The indention for lines following "then", "else" and ","
	(continued) lines.
 rexx-tab-always-indent
	Non-nil means TAB in REXX mode should always reindent the current 
	line, regardless of where in the line the point is when the TAB
	command is used.

If you have set rexx-end-indent to a nonzero value, you probably want to
remap RETURN to rexx-indent-newline-indent. It makes sure that lines
indents correctly when you press RETURN.

An extensive abbrevation table consisting of all the keywords of REXX are
supplied. Expanded keywords are converted into upper case making it
easier to distinguish them. To use this feature the buffer must be in
abbrev-mode. (See example below.)

Turning on REXX mode calls the value of the variable rexx-mode-hook with
no args, if that value is non-nil.

For example:
(setq rexx-mode-hook '(lambda ()
			(setq rexx-indent 4)
			(setq rexx-end-indent 4)
			(setq rexx-cont-indent 4)
			(local-set-key "\C-m" 'rexx-indent-newline-indent)
			(abbrev-mode 1)
			))

will make the END aligned with the DO/SELECT. It will indent blocks and
IF-statenents four steps and make sure that the END jumps into the
correct position when RETURN is pressed. Finaly it will use the abbrev
table to convert all REXX keywords into upper case.
(defalias 'rexx-mode #[nil "À ˆÁ\n!ˆÃ\f!ˆÅÇ	\nËÌ!ˆÍ\fËÎ!ˆÏPËÑ!ˆËÒ!ˆÍËÓ!ˆÔËÕ!ˆÍËÖ!ˆ×ËØ!ˆÙËÚ!ˆÛËÜ!ˆÝËÞ!ˆßàá!ˆËâ!ˆã\"äå!ˆæç!‡" [kill-all-local-variables use-local-map rexx-mode-map set-syntax-table rexx-mode-syntax-table rexx-mode major-mode "REXX" mode-name rexx-mode-abbrev-table local-abbrev-table make-local-variable case-fold-search t paragraph-start "^$\\|" page-delimiter paragraph-separate paragraph-ignore-fill-prefix indent-line-function rexx-indent-command parse-sexp-ignore-comments comment-start "/*" comment-end "*/" comment-column 32 comment-start-skip "/\\*+ *" comment-indent-function rexx-comment-indent message "setting font-lock" font-lock-defaults ((rexx-font-lock-keywords-1 rexx-font-lock-keywords-2 rexx-font-lock-keywords-3) nil t ((95 . "w"))) require font-lock run-hooks rexx-mode-hook] 2 (#$ . 11564) nil])
#@39 Indent the current line as REXX code.
(defalias 'rexx-indent-command #[(&optional whole-exp) "ƒ2 Á Â‰Šƒ Çyˆ`ÈÉ!ˆ`\fbˆÉyˆ`)\fV…0 Ê\f#+‡„D ŠËÂxˆn)„D Ì ‡Á ‡" [whole-exp rexx-indent-line nil end beg shift-amt rexx-tab-always-indent 0 forward-sexp 1 indent-code-rigidly " 	" insert-tab] 4 (#$ . 14066) "P"])
#@85 Indent the current line as REXX code.
Return the amount the indentation changed by.
(defalias 'rexx-indent-line #[nil "À Á‰d`ZÆyˆ`Á=ƒ Ç ‚J È=ƒ( É ‚J ÊË!ƒ3 Æ‚J ÌÁwˆ<ƒ? @ÊÍ!ƒJ ZÌÁwˆiZ‰ÆUƒh d\nZ`Vƒ| d\nZbˆ‚| \f`|ˆjˆd\nZ`Vƒ| d\nZbˆ,‡" [rexx-calc-indent nil pos shift-amt beg indent 0 current-indentation t rexx-calculate-indent-within-comment looking-at "[ 	]*#" " 	" "end" rexx-end-indent] 6 (#$ . 14390)])
#@61 Return the appropriate indentation for this line as an int.
(defalias 'rexx-calc-indent #[nil "ŠÀyˆÁ Â‰‰ŠÇ )È\f8„ É\f8ƒ% É\f8‚ ÊË!ˆÀyˆÁ ‰VƒC bˆÀyˆÁ ‰‚0 `Vƒ{ Ì!ƒY Î \\‚ Î ÊË!ˆÀyˆÌ!ƒw Î ÊË!ˆÀyˆ‚c ‚ ËUƒ† À‚ bˆÎ \\-‡" [0 rexx-find-environment nil indent state beg block rexx-inside-comment-or-string 3 4 rexx-backup-to-noncomment 1 looking-at rexx-special-regexp current-indentation rexx-cont-indent rexx-indent] 5 (#$ . 14822)])
#@56 Backup the point to the previous noncomment REXX line.
(defalias 'rexx-backup-to-noncomment #[(lim) "À	„, Âxˆ`Ä\\Yƒ& ŠÅuˆÆÇ!)ƒ& ÈÉÊ#ˆ‚ Ë‰ƒ `Y)‡" [nil stop " 	\n\f" lim 2 -2 looking-at "\\*/" search-backward "/*" move t] 5 (#$ . 15287)])
#@107 Return the position of the corresponding "do" or "select".
If none found, return the beginning of buffer.
(defalias 'rexx-find-environment #[nil "ŠÀÁÂ\fƒQ ÆU„Q ÇÈÀÁ#ŠÉ )Ê8„) Ë8ƒ- Æ‚L ÌÍ!ƒ7 Î‚L ÌÏ!ƒA Î‚L ÌÐ!ƒK À‚L Æ\\‚ \fƒY `‚Z À,‡" [1 t nil state cont do-level 0 re-search-backward "\\b\\(do\\|select\\|end\\)\\b" rexx-inside-comment-or-string 3 4 looking-at "do" -1 "select" "end"] 4 (#$ . 15539)])
#@118 Return the indentation amount for line, assuming that
the current line is to be regarded as part of a block comment.
(defalias 'rexx-calculate-indent-within-comment #[nil "À‰ŠÃyˆÄÀwˆgÅUÆÀxˆ`ÃyˆÄÀwˆÇÈ\nÉ#ƒ. 	ƒ. Ã”Tbˆi+‡" [nil star-start end 0 " 	" 42 " 	\n" re-search-forward "/\\*[ 	]*" t] 4 (#$ . 15957)])
(defalias 'rexx-comment-indent #[nil "ÀÁ!ƒ Â‡ŠÃÄxˆiT])‡" [looking-at "^/\\*" 0 " 	" nil comment-column] 2])
#@64 Set mark, look for the "do" or "select" for the present block.
(defalias 'rexx-find-matching-do #[nil "ÀÁ!ˆÂyˆÃ b‡" [set-mark-command nil 0 rexx-find-environment] 2 (#$ . 16384) nil])
#@61 If abbrev was made within a comment or a string, de-abbrev!
(defalias 'rexx-check-expansion #[nil "À Â	8„ Ã	8… Ä )‡" [rexx-inside-comment-or-string state 3 4 unexpand-abbrev] 2 (#$ . 16574)])
#@152 Check if the point is inside a comment or a string.
It returns the state from parse-partial-sexp for the search that
terminated on the points position
(defalias 'rexx-inside-comment-or-string #[nil "`ÀŠÃbˆ\n`Vƒ Ä`\nÅ#‚ )	*‡" [nil state origpoint 1 parse-partial-sexp 0] 4 (#$ . 16776)])
#@91 New newline-and-indent which expands abbrevs before running
a regular newline-and-indent.
(defalias 'rexx-indent-and-newline #[nil "ƒ Á ˆÂ ‡" [abbrev-mode expand-abbrev newline-and-indent] 1 (#$ . 17074) nil])
#@111 New newline-and-indent which expands abbrevs and indent the line
before running a regular newline-and-indent.
(defalias 'rexx-indent-newline-indent #[nil "À ˆ	ƒ\n Â ˆÃ ‡" [rexx-indent-command abbrev-mode expand-abbrev newline-and-indent] 1 (#$ . 17293) nil])
