gnu-emacs-sources
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ctrl-lang.el [LONG]


From: Evans Winner
Subject: ctrl-lang.el [LONG]
Date: 19 Jan 2007 21:50:22 -0800
User-agent: G2/1.0

FWIW, this is a generic major mode for font-lock and doc lookup for IBM
AS/400 (aka iSeries) Control Language files.  Just the ticket for me
and the three other people on the planet who would want such a thing.

;;; ctrl-lang.el --- generic AS/400 Control Language mode

;; Version: 0.1
;; Copyright (C) 2006 thorne
;; Time-stamp: <2006-08-13 07:19:50 ewinner>
;; Author: thorne <address@hidden>
;; Created: 2006.8.3
;; Keywords: files languages
;; Favorite Color: Beer, as in Emacs.

;; This file is not part of GNU Emacs.
;;
;; This program is free software; you can redistribute it
;; and/or modify it under the terms of the GNU General
;; Public License as published by the Free Software
;; Foundation; either version 2 of the License, or (at your
;; option) any later version.
;;
;; This program 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 General Public License
;; for more details.
;;
;; You should have received a copy of the GNU General Public
;; License along with this program; if not, write to the
;; Free Software Foundation, Inc., 59 Temple Place, Suite
;; 330, Boston, MA 02111-1307 USA

;;; Commentary:

;; PURPOSE: For editing IBM AS/400 (aka iSeries) CL program
;; source code (CL not to be confused with Common Lisp in
;; this context).  Mostly just syntax highlighting, mostly.
;; Not much fun, really, and a bit fruity.
;;
;; USE: Load or autoload this file, then visit a CL source
;; file and then do `M-x ctrl-lang-mode'.
;;
;; MISC: I am not a programmer really, and this is as much
;; about trying to learn some Emacs Lisp as anything else.
;; So, (standard disclamer...) do me the favor of letting me
;; know if there is stuff that is seriously dumb about it or
;; needs fixing, etc.  I would appreciate it.
;;
;; REQUIRES: This package uses the generic mode package,
;; `generic.el'.

;;; Change Log:
;;
;;  Version 0.1
;;  * initial release

;;; Bugs:
;;
;; * `?%' needs a space after it or else the following CL
;;   command won't get font-locked.  Dunno why.
;; * Can't embed strings in comments.  I can't find a work-
;;   around.

;;; Code:

;; USER VARIABLES:
;;  ctrl-lang-doc-base-address --  If IBM ever changes their
;;                                 URL for CL docs, or if
;;                                 you want to use the docs
;;                                 for a more release of
;;                                 OS/400 change this.
;;  site-commands              --  Add your own custom Cl
;;                                 commands here.
;; Other than that, see below.

;; This hack uses browse-url and the ibm site.
;; For the docs, concatenates the base URL with the first 8
;; letters of the command name (then `.htm').
;; For the syntax diagram, it's URL - command name (all of
;; it) then `syn.htm'.  Don't ask me why.
(defconst ctrl-lang-doc-base-address
"http://publib.boulder.ibm.com/iseries/v5r2/ic2924/info/cl/";
"Base web address to use for automatic command doc lookup.")

;; To be closer to normal CL coding standards:
(defvar ctrl-lang-tab-width 11
  "*`tab-with' to use in `ctrl-lang-mode'.")
(defvar ctrl-lang-fill-column 68
  "*`fill-column' value to use in `ctrl-lang-mode'.")

;; Site-specific CL commands:
(setq site-commands
      (list
       "FOOBARBAZ" "FROM3XB"))

;; Setup
(require 'generic)
(require 'browse-url)  ; For the doc lookup feature.

;; This is for the giant list of commands.  I don't know how
;; to do this without clobbering people's default setting.
(setq max-specpdl-size 2000)

;; Helper functions and misc.

;; Called by default with the mode hook.  Set the values in
;; the User-changable variables section above.  I think it's
;; buffer local...
(defun ctrl-lang-env-setup ()
"Set `fill-column' and `tab-width' for `ctrl-lang-mode'.
Called by `ctrl-lang-mode-hook'."
(setq tab-width ctrl-lang-tab-width)
(setq fill-column ctrl-lang-fill-column))

(defun ctrl-lang-add-mode-line ()
"Add text: `/* -*- Mode: ctrl-lang -*- */' to top of buffer.
Allows Emacs to open the file in ctrl-lang mode
automatically, since we can't use `auto-mode-alist'
in the context of files without a distinctive file
extension--as is the case with CL source files."
(interactive)
(save-excursion
        (goto-char (point-min))
        (insert "/* -*- Mode: ctrl-lang -*- */\n")))
(global-set-key "\C-c\C-lm" 'ctrl-lang-add-mode-line)

(defun ctrl-lang-get-doc ()
"Browse IBM's online documentation for the selected command.

Uses function `point' and function `mark', so the whole CL
command and nothing but the whole CL command must be
selected when this function is run."
(interactive)
(browse-url
 (concat ctrl-lang-doc-base-address
         (downcase (buffer-substring (mark)
                           (if (< (- (point) (mark)) 8)
                               (point)
                             (+ (mark) 8))))
         ".htm")))
(global-set-key "\C-c\C-ld" 'ctrl-lang-get-doc)

(defun ctrl-lang-get-syntax ()
"Browse IBM's online syntax diagram for selected command.

Uses function `point' and function `mark', so the whole CL
command and nothing but the whole CL command must be
selected when this function is run."
(interactive)
(browse-url
 (concat ctrl-lang-doc-base-address
         (downcase (buffer-substring (mark) (point)))
         "syn.htm")))
(global-set-key "\C-c\C-ls" 'ctrl-lang-get-syntax)


;;; Data:

;; These are the giant lists of CL commands.  (Stupid?)
;; We are doing two lists.  One for most everything and
;; one for just flow control and some other keyword-like
;; CL commands, like PGM and IF.  The first we do in
;; `font-lock-function-name-face', the second we do in
;; `font-lock-keyword-face'.

;; This one is open to additions...
(setq keyword-list
      (list
"CALL" "CALLPRC" "DCL" "DCLF" "DO" "ELSE"
"ENDDO" "ENDPGM" "EXEC" "GOTO" "IF" "PGM"
"RETURN" "SMBJOB" "THEN" "TFRCTL" "TFRJOB"))

;; The giant list... Commented items have been moved to the
;; keyword list, but are left in in case.  I am leaving it
;; in not-compact, but easy-to-maintain one-to-a-line
;; format.  Sorry.
;;
;; This comes from IBM's listing for V5R2
(setq command-list
      (list
"ADDACC"
"ADDALRACNE"
"ADDALRD"
"ADDALRSLTE"
"ADDAUTLE"
"ADDAJE"
"ADDBNDDIRE"
"ADDBKP"
"ADDCCSCLT"
"ADDCRQA"
"ADDCLUNODE"
"ADDCRGDEVE"
"ADDCRGNODE"
"ADDCMDCRQA"
"ADDCMNE"
"ADDCOMSNMP"
"ADDCFGLE"
"ADDCNNLE"
"ADDDTADFN"
"ADDDEVDMNE"
"ADDDIRE"
"ADDDIRSHD"
"ADDDSTCLGE"
"ADDDSTLE"
"ADDDSTQ"
"ADDDSTRTE"
"ADDDSTSYSN"
"ADDDLOAUT"
"ADDEMLCFGE"
"ADDENVVAR"
"ADDEXITPGM"
"ADDEWCBCDE"
"ADDEWCM"
"ADDEWCPTCE"
"ADDEWLM"
"ADDFNTTBLE"
"ADDHDBDLFM"
"ADDIMGCLGE"
"ADDICFDEVE"
"ADDIPSIFC"
"ADDIPSLOC"
"ADDIPSRTE"
"ADDJOBQE"
"ADDJOBSCDE"
"ADDJOBJS"
"ADDLIBLE"
"ADDLICCRQA"
"ADDLICKEY"
"ADDLNK"
"ADDLANADPI"
"ADDLFM"
"ADDMEDIBRM"
"ADDMLMBRM"
"ADDMEDBRM"
"ADDMSGD"
"ADDMFS"
"MOUNT"
"ADDNTWAUTE"
"ADDNETJOBE"
"ADDNWSSTGL"
"ADDNETTBLE"
"ADDNCK"
"ADDNODLE"
"ADDOBJCRQA"
"ADDOPTCTG"
"ADDOPTSVR"
"ADDPEXDFN"
"ADDPEXFTR"
"ADDPFCST"
"ADDPFM"
"ADDPFTRG"
"ADDTCPPTP"
"ADDPJE"
"ADDPRBACNE"
"ADDPRBSLTE"
"ADDPRDCRQA"
"ADDPRDLICI"
"ADDPGM"
"ADDPTFCRQA"
"ADDPCLTBLE"
"ADDRDBDIRE"
"ADDRMTDFN"
"ADDRMTJRN"
"ADDRPYLE"
"ADDRSCCRQA"
"ADDREXBUF"
"ADDRTGE"
"ADDSCHIDXE"
"ADDSVRAUTE"
"ADDSRVTBLE"
"ADDSOCE"
"ADDTAPCTG"
"ADDTCPHTE"
"ADDTCPIFC"
"ADDTCPPORT"
"ADDTCPRSI"
"ADDTCPRTE"
"ADDTRC"
"ADDTRCFTR"
"ADDUSFCNNE"
"ADDUSFDEVE"
"ADDUSFSVRE"
"ADDWSE"
"ALCOBJ"
"ANZACCGRP"
"ANZDBF"
"ANZDBFKEY"
"ANZDFTPWD"
"ANZJVAPGM"
"ANZJVM"
"ANZLIBBRM"
"ANZPFRDTA"
"ANZPRB"
"ANZPRFACT"
"ANZPGM"
"ANZQRY"
"ANZUSROBJ"
"ANSLIN"
"ANSQST"
"APYJRNCHG"
"APYPTF"
"APYRMTPTF"
"ASKQST"
"BCHJOB"
;"CALLPRC"
;"CALL"
"CHGACGCDE"
"CHGACTSCDE"
"CHGACTPRFL"
"CHGALRACNE"
"CHGALRD"
"CHGALRSLTE"
"CHGALRTBL"
"CHGASPA"
"CHGATR"
"CHGAUD"
"CHGAUT"
"CHGAUTLE"
"CHGAJE"
"CHGBCKUP"
"CHGBPA"
"CHGCCSA"
"CHGCRQA"
"CHGCRQD"
"CHGCLS"
"CHGCOSD"
"CHGCLNUP"
"CHGCLUCFG"
"CHGCLUNODE"
"CHGCLURCY"
"CHGCRG"
"CHGCRGDEVE"
"CHGCRGPRI"
"CHGCLUVER"
"CHGCDEFNT"
"CHGCMD"
"CHGCMDCRQA"
"CHGCMDDFT"
"CHGCMNE"
"CHGCSI"
"CHGCOMSNMP"
"CHGCFGL"
"CHGCFGLE"
"CHGCNNL"
"CHGCNNLE"
"CHGCTLAPPC"
"CHGCTLASC"
"CHGCTLBSC"
"CHGCTLFNC"
"CHGCTLLWS"
"CHGCTLNET"
"CHGCTLRWS"
"CHGCTLRTL"
"CHGCTLHOST"
"CHGCTLTAP"
"CHGCTLVWS"
"CD"
"CHDIR"
"CHGCURDIR"
"CHGCURLIB"
"CHGDTAARA"
"CHGDDMTCPA"
"CHGDBG"
"CHGDSTPWD"
"CHGDEVAPPC"
"CHGDEVASP"
"CHGDEVASC"
"CHGDEVBSC"
"CHGDEVCRP"
"CHGDEVDKT"
"CHGDEVDSP"
"CHGDEVFNC"
"CHGDEVINTR"
"CHGDEVMLB"
"CHGDEVNET"
"CHGDEVOPT"
"CHGDEVPRT"
"CHGDEVRTL"
"CHGDEVHOST"
"CHGDEVSNPT"
"CHGDEVSNUF"
"CHGDEVTAP"
"CHGDHCPA"
"CHGDIRE"
"CHGDIRSHD"
"CHGDKTF"
"CHGDSPF"
"CHGDDMF"
"CHGDSTA"
"CHGDSTD"
"CHGDSTL"
"CHGDSTQ"
"CHGDSTRTE"
"CHGDOCD"
"CHGDLOAUD"
"CHGDLOAUT"
"CHGDLOOWN"
"CHGDLOPGP"
"CHGEMLCFGE"
"CHGENVVAR"
"CHGEXPSCDE"
"CHGEWCBCDE"
"CHGEWCM"
"CHGEWCPTCE"
"CHGEWLM"
"CHGFTR"
"CHGFNTRSC"
"CHGFNTTBLE"
"CHGFCNARA"
"CHGGPHFMT"
"CHGGPHPKG"
"CHGGRPA"
"CHGHLLPTR"
"CHGHTTPA"
"CHGICFDEVE"
"CHGIMGCLG"
"CHGIMGCLGE"
"CHGICFF"
"CHGIPSIFC"
"CHGIPSLOC"
"CHGIPSTOS"
"CHGIPLA"
"CHGJVAPGM"
"CHGJOB"
"CHGAUTJS"
"CHGJOBD"
"CHGJOBMLBA"
"CHGJOBQE"
"CHGJOBSCDE"
"CHGSCDBRM"
"CHGJOBTYP"
"CHGJOBJS"
"CHGJRN"
"CHGKBDMAP"
"CHGLANADPI"
"CHGLIB"
"CHGLIBL"
"CHGLICCRQA"
"CHGLICINF"
"CHGLINASC"
"CHGLINBSC"
"CHGLINDDI"
"CHGLINETH"
"CHGLINFAX"
"CHGLINFR"
"CHGLINIDLC"
"CHGLINNET"
"CHGLINPPP"
"CHGLINSDLC"
"CHGLINTDLC"
"CHGLINTRN"
"CHGLINWLS"
"CHGLINX25"
"CHGLF"
"CHGLFM"
"CHGMGDSYSA"
"CHGMGRSRVA"
"CHGMEDBRM"
"CHGMNU"
"CHGMSGD"
"CHGMSGF"
"CHGMSGQ"
"CHGMODD"
"CHGMOD"
"CHGNTBD"
"CHGNTWAUTE"
"CHGNTWVOL"
"CHGNETA"
"CHGNFSEXP"
"EXPORTFS"
"CHGNWIATM"
"CHGNWIFR"
"CHGNWIISDN"
"CHGNETJOBE"
"CHGNWSA"
"CHGNWSD"
"CHGNWSUSRA"
"CHGNTPA"
"CHGNCK"
"CHGNODGRPA"
"CHGOBJAUD"
"CHGOBJCRQA"
"CHGOBJD"
"CHGOBJOWN"
"CHGOBJPGP"
"CHGOPTA"
"CHGOPTVOL"
"CHGOUTQ"
"CHGOWN"
"CHGPGRJS"
"CHGDTAJS"
"CHGPWD"
"CHGPEXDFN"
"CHGPFTRG"
"CHGPF"
"CHGPFCST"
"CHGPFM"
"CHGPTR"
"CHGPWRSCD"
"CHGPWRSCDE"
"CHGPJ"
"CHGPJE"
"CHGPJE"
"CHGPGP"
"CHGPDGPRF"
"CHGPSFCFG"
"CHGPRTF"
"CHGPRB"
"CHGPRBACNE"
"CHGPRBSLTE"
"CHGPRDCRQA"
"CHGPRDOBJD"
"CHGPRF"
"CHGPGM"
"CHGPGMVAR"
"CHGPTFCRQA"
"CHGQRYA"
"CHGQSTDB"
"CHGRCYAP"
"CHGRDBDIRE"
"CHGRMTDFN"
"CHGRMTJRN"
"CHGRPYLE"
"CHGRSCCRQA"
"CHGRTDA"
"CHGRTGE"
"CHGRWSPWD"
"CHGSAVF"
"CHGSCHIDX"
"CHGSECA"
"CHGSECAUD"
"CHGSVRAUTE"
"CHGSRVA"
"CHGSRVPGM"
"CHGSRVPVDA"
"CHGSSNMAX"
"CHGSHRPOOL"
"CHGSNMPA"
"CHGSRCPF"
"CHGSPLFA"
"CHGSBSD"
"CHGSYSDIRA"
"CHGSYSJOB"
"CHGSYSLIBL"
"CHGSYSVAL"
"CHGS36"
"CHGS36A"
"CHGS36MSGL"
"CHGS36PRCA"
"CHGS36PGMA"
"CHGS36SRCA"
"CHGTAPCTG"
"CHGTAPF"
"CHGTCPA"
"CHGTCPDMN"
"CHGTCPHTE"
"CHGTCPIFC"
"CHGTCPRTE"
"CHGTFTPA"
"CHGUSFDEVE"
"CHGUSRAUD"
"CHGUSRPRTI"
"CHGUSRPRF"
"CHGUSRTRC"
"CHGVAR"
"CHGWSE"
"CHGWTR"
"CHKASPBAL"
"CHKCMNTRC"
"CHKIGCTBL"
"CHKDKT"
"CHKDLO"
"CHKEXPBRM"
"CHKIN"
"CHKOBJ"
"CHKOBJITG"
"CHKOUT"
"CHKPWD"
"CHKPRDOPT"
"CHKRCDLCK"
"CHKTAP"
"CLRDKT"
"CLRJOBQ"
"CLRLIB"
"CLRMSGQ"
"CLROUTQ"
"CLRPFM"
"CLRPOOL"
"CLRSAVF"
"CLRSVRSEC"
"CLRTRCDTA"
"CLOF"
"COMMIT"
"CMPJRNIMG"
"CPROBJ"
"CFGDEVMLB"
"CFGDSTSRV"
"CFGHTTPSCH"
"CFGPM400"
"CFGTCPPTP"
"CFGSYSSEC"
"CFGTCP"
"CFGTCPAPP"
"CFGTCPBP"
"CFGTCPHTTP"
"CFGTCPRTD"
"CFGTCPSNMP"
"CVTCLSRC"
"CVTDAT"
"CVTDIR"
"CVTDLSNAM"
"CVTEDU"
"CVTIPSIFC"
"CVTIPSLOC"
"CVTOPTBKU"
"CVTPFRDTA"
"CVTPFRTHD"
"CVTRPCSRC"
"RPCGEN"
"CVTTCPCL"
"COPY"
"CPY"
"CPYCFGL"
"CPYIGCTBL"
"CPYDSTRPSO"
"CPYDOC"
"CPYF"
"CPYFRMDIR"
"CPYFRMDKT"
"CPYFRMIMPF"
"CPYFRMPCD"
"CPYFRMPCFF"
"CPYFRMQRYF"
"CPYFRMSTMF"
"CPYFRMTAP"
"CPYFCNARA"
"CPYGPHFMT"
"CPYGPHPKG"
"CPYJOBJS"
"CPYLIB"
"CPYMEDIBRM"
"CPYOPT"
"CPYPFRDTA"
"CPYPTF"
"CPYPTFCVR"
"CPYPTFGRP"
"CPYPTFSAVF"
"CPYSRCF"
"CPYSPLF"
"CPYTODIR"
"CPYTODKT"
"CPYTOIMPF"
"CPYTOPCD"
"CPYTOPCFF"
"CPYTOSTMF"
"CPYTOTAP"
"COPYRIGHT"
"CRTDTADCT"
"CRTALRTBL"
"CRTAUTHLR"
"CRTAUTL"
"CRTBNDDIR"
"CRTBNDCL"
"CRTCRQD"
"CRTCLS"
"CRTCOSD"
"CRTCLU"
"CRTCRG"
"CRTCMD"
"CRTCSI"
"CRTCFGL"
"CRTCNNL"
"CRTCLMOD"
"CRTCLPGM"
"CRTCTLAPPC"
"CRTCTLASC"
"CRTCTLBSC"
"CRTCTLFNC"
"CRTCTLLWS"
"CRTCTLNET"
"CRTCTLRWS"
"CRTCTLRTL"
"CRTCTLHOST"
"CRTCTLTAP"
"CRTCTLVWS"
"CRTDTAARA"
"CRTDTAQ"
"CRTIGCDCT"
"CRTDEVAPPC"
"CRTDEVASP"
"CRTDEVASC"
"CRTDEVBSC"
"CRTDEVCRP"
"CRTDEVDKT"
"CRTDEVDSP"
"CRTDEVFNC"
"CRTDEVINTR"
"CRTDEVMLB"
"CRTDEVNET"
"CRTDEVOPT"
"CRTDEVPRT"
"CRTDEVRTL"
"CRTDEVHOST"
"CRTDEVSNPT"
"CRTDEVSNUF"
"CRTDEVTAP"
"CRTDIR"
"MD"
"MKDIR"
"CRTDKTF"
"CRTDSPF"
"CRTDDMF"
"CRTDSTL"
"CRTDOC"
"CRTDUPOBJ"
"CRTEDTD"
"CRTFTR"
"CRTFLR"
"CRTFNTRSC"
"CRTFNTTBL"
"CRTFORMDF"
"CRTFCNARA"
"CRTGPHFMT"
"CRTGPHPKG"
"CRTGSS"
"CRTHSTDTA"
"CRTIMGCLG"
"CRTICFF"
"CRTJVAPGM"
"CRTJOBD"
"CRTJOBQ"
"CRTJRN"
"CRTJRNRCV"
"CRTLIB"
"CRTLINASC"
"CRTLINBSC"
"CRTLINDDI"
"CRTLINETH"
"CRTLINFAX"
"CRTLINFR"
"CRTLINIDLC"
"CRTLINNET"
"CRTLINPPP"
"CRTLINSDLC"
"CRTLINTDLC"
"CRTLINTRN"
"CRTLINWLS"
"CRTLINX25"
"CRTLOCALE"
"CRTLF"
"CRTMNU"
"CRTMSGF"
"CRTMSGFMNU"
"CRTMSGQ"
"CRTMODD"
"CRTNTBD"
"CRTNTWVOL"
"CRTNWIATM"
"CRTNWIFR"
"CRTNWIISDN"
"CRTNWSD"
"CRTNWSSTG"
"CRTNODGRP"
"CRTNODL"
"CRTOUTQ"
"CRTOVL"
"CRTPAGDFN"
"CRTPAGSEG"
"CRTPNLGRP"
"CRTPFRDTA"
"CRTPEXDTA"
"CRTPF"
"CRTPDG"
"CRTPSFCFG"
"CRTPRTF"
"CRTPRDDFN"
"CRTPRDLOD"
"CRTPGM"
"CRTPTF"
"CRTPTFPKG"
"CRTQMFORM"
"CRTQMQRY"
"CRTQSTDB"
"CRTQSTLOD"
"CRTSAVF"
"CRTSCHIDX"
"CRTSRVPGM"
"CRTSRCPF"
"CRTSPADCT"
"CRTSQLPKG"
"CRTSBSD"
"CRTS36DSPF"
"CRTS36MNU"
"CRTS36MSGF"
"CRTTBL"
"CRTTAPCGY"
"CRTTAPF"
"CRTUSRPRF"
"CRTUDFS"
"CRTVLDL"
"CRTWSCST"
"DATA"
"DLCOBJ"
;"DCL"
;"DCLF"
"DCPOBJ"
"DLYJOB"
"DLTALR"
"DLTALRTBL"
"DLTAPARDTA"
"DLTAUTHLR"
"DLTAUTL"
"DLTBNDDIR"
"DLTCRQD"
"DLTCLS"
"DLTCOSD"
"DLTCLU"
"DLTCRG"
"DLTCRGCLU"
"DLTCMD"
"DLTCSI"
"DLTCMNTRC"
"DLTCFGL"
"DLTCNNL"
"DLTCTLD"
"DLTDTAARA"
"DLTDTADCT"
"DLTDTAQ"
"DLTIGCDCT"
"DLTIGCTBL"
"DLTDEVD"
"DLTDKTLBL"
"DLTDST"
"DLTDSTL"
"DLTDLO"
"DLTDOCL"
"DLTEDTD"
"DLTF"
"DLTFTR"
"DLTFRWLOG"
"DLTFNTRSC"
"DLTFNTTBL"
"DLTFORMDF"
"DLTFCNARA"
"DLTGPHFMT"
"DLTGPHPKG"
"DLTGSS"
"DLTHSTDTA"
"DLTIMGCLG"
"DLTIPXD"
"DLTJVAPGM"
"DLTJOBD"
"DLTJOBD"
"DLTJOBQ"
"DLTJRN"
"DLTJRNRCV"
"DLTLIB"
"DLTLICPGM"
"DLTLIND"
"DLTLOCALE"
"DLTMEDDFN"
"DLTMGTCOL"
"DLTMNU"
"DLTMSGF"
"DLTMSGQ"
"DLTMODD"
"DLTMOD"
"DLTNTBD"
"DLTNETF"
"DLTNWID"
"DLTNWSD"
"DLTNWSSTG"
"DLTNODGRP"
"DLTNODL"
"DLTOUTQ"
"DLTOVL"
"DLTOVR"
"DLTOVRDEVE"
"DLTPAGDFN"
"DLTPAGSEG"
"DLTPNLGRP"
"DLTPFRDTA"
"DLTPEXDTA"
"DLTPDG"
"DLTPSFCFG"
"DLTPRB"
"DLTPRDDFN"
"DLTPRDLOD"
"DLTPGM"
"DLTPTF"
"DLTQRY"
"DLTQMFORM"
"DLTQMQRY"
"DLTQST"
"DLTQSTDB"
"DLTRMTPTF"
"DLTSCHIDX"
"DLTSRVPGM"
"DLTSPADCT"
"DLTSPLF"
"DLTSQLPKG"
"DLTSBMCRQ"
"DLTSBSD"
"DLTSMGOBJ"
"DLTTBL"
"DLTTAPCGY"
"DLTTRC"
"DLTUSRIDX"
"DLTUSRPRF"
"DLTUSRQ"
"DLTUSRSPC"
"DLTUSRTRC"
"DLTUDFS"
"DLTVLDL"
"DLTWSCST"
"DSCJOB"
"DSPACC"
"DSPACCAUT"
"DSPACCGRP"
"DSPACTSCD"
"DSPACTPJ"
"DSPACTPRFL"
"DSPAPPNINF"
"DSPASPBRM"
"DSPAUDJRNE"
"DSPAUT"
"DSPAUTHLR"
"DSPAUTL"
"DSPAUTLDLO"
"DSPAUTLOBJ"
"DSPAUTUSR"
"DSPBCKUPL"
"DSPBCKUP"
"DSPBKUBRM"
"DSPBCKSTS"
"DSPBNDDIR"
"DSPBKP"
"DSPCCSA"
"DSPCPCST"
"DSPCLS"
"DSPCOSD"
"DSPCLUINF"
"DSPCRGINF"
"DSPCDEFNT"
"DSPCMD"
"DSPCSI"
"DSPCFGL"
"DSPCNNL"
"DSPCNNSTS"
"DSPCTLD"
"DSPCURDIR"
"DSPDTAARA"
"DSPDTADCT"
"DSPDBR"
"DSPIGCDCT"
"DSPDBG"
"DSPDBGWCH"
"DSPDEVD"
"DSPDIRE"
"DSPDKT"
"DSPDDMF"
"DSPDSTCLGE"
"DSPDSTL"
"DSPDSTLOG"
"DSPDSTSRV"
"DSPDOC"
"DSPDLOAUD"
"DSPDLOAUT"
"DSPDLONAM"
"DSPDUPBRM"
"DSPEDTD"
"DSPEXPSCD"
"DSPEWCBCDE"
"DSPEWCM"
"DSPEWCPTCE"
"DSPEWLM"
"DSPF"
"DSPFD"
"DSPFFD"
"DSPFLR"
"DSPFNTRSCA"
"DSPFNTTBL"
"DSPHDWRSC"
"DSPHLPDOC"
"DSPHFS"
"DSPHSTGPH"
"DSPHSTJS"
"DSPIPLA"
"DSPIPXD"
"DSPJVAPGM"
"DSPJOB"
"DSPJOBD"
"DSPJOBLOG"
"DSPJOBTBL"
"DSPJOBJS"
"DSPJRN"
"DSPJRNRCVA"
"DSPKBDMAP"
"DSPLANMLB"
"DSPLIB"
"DSPLIBD"
"DSPLIBL"
"DSPLICKEY"
"DSPLIND"
"DSPLANADPP"
"DSPLANSTS"
"DSPLOG"
"DSPLOGBRM"
"DSPLOGJS"
"DSPMGDSYSA"
"DSPMNUA"
"DSPMSGD"
"DSPMSG"
"DSPMODD"
"DSPMODSTS"
"DSPMOD"
"DSPMODSRC"
"DSPMFSINF"
"STATFS"
"DSPNTBD"
"DSPNETA"
"DSPNWID"
"DSPNWSA"
"DSPNWSD"
"DSPNWSSTG"
"DSPNWSUSRA"
"DSPNWSUSR"
"DSPNCK"
"DSPNODGRP"
"DSPOBJAUT"
"DSPOBJD"
"DSPLNK"
"DSPOPT"
"DSPOPTLCK"
"DSPOPTSVR"
"DSPOPCLNK"
"DSPOVR"
"DSPPFRDTA"
"DSPPFRGPH"
"DSPPFM"
"DSPPWRSCD"
"DSPPDGPRF"
"DSPPSFCFG"
"DSPPRB"
"DSPPGM"
"DSPPGMREF"
"DSPPTF"
"DSPPGMVAR"
"DSPPGMADP"
"DSPPTFCVR"
"DSPRCVCMD"
"DSPRCDLCK"
"DSPRCYAP"
"DSPRDBDIRE"
"DSPRMTDFN"
"DSPSAVF"
"DSPSECA"
"DSPSECAUD"
"DSPSVRAUTE"
"DSPSRVA"
"DSPSRVPG"
"DSPSRVPVDA"
"DSPSRVSTS"
"DSPSFWRSC"
"DSPSOCSTS"
"DSPSPLF"
"DSPSBMCRQA"
"DSPSBMCRQM"
"DSPSBMCRQ"
"DSPSBSD"
"DSPSYSSTS"
"DSPSYSVAL"
"DSPS36"
"DSPTAP"
"DSPTAPCTG"
"DSPTAPCGY"
"DSPTAPSTS"
"DSPTRC"
"DSPTRCDTA"
"DSPTM"
"DSPUSRPMN"
"DSPUSRPRTI"
"DSPUSRPRF"
"DSPUDFS"
"DSPWSUSR"
;"DO"
"DMP"
"DMPBRM"
"DMPCLUTRC"
"DMPCLPGM"
"DMPDLO"
"DMPJVM"
"DMPJOB"
"DMPJOBINT"
"DMPOBJ"
"DMPSYSOBJ"
"DMPTAP"
"DMPTRC"
"DMPUSRTRC"
"DUPDKT"
"DUPMEDBRM"
"DUPOPT"
"DUPTAP"
"EDTAUTL"
"EDTBCKUPL"
"EDTCPCST"
"EDTIGCDCT"
"EDTDOC"
"EDTDLOAU"
"EDTF"
"EDTLIBL"
"EDTOBJAUT"
"EDTQST"
"EDTRBDAP"
"EDTRCYAP"
"EDTS36PRCA"
"EDTS36PGMA"
"EDTS36SRCA"
"EDTWSOAUT"
"EJTEMLOUT"
;"ELSE"
"EMLPRTKEY"
"ENDASPBAL"
"ENDBCHJOB"
"ENDCLNUP"
"ENDCLUNOD"
"ENDCRG"
"ENDCHTSVR"
"ENDCMTCTL"
"ENDCMNSVR"
"ENDCMNTRC"
"ENDCTLRCY"
"ENDCPYSC"
"ENDDBMON"
"ENDDBG"
"ENDDBGSVR"
"ENDDEVRCY"
"ENDDIRSHD"
"ENDDSKRGZ"
;"ENDDO"
"ENDGRPJOB"
"ENDHOSTSVR"
"ENDHTTPCRL"
"ENDINP"
"ENDIPSIFC"
"ENDJOB"
"ENDJOBABN"
"ENDJS"
"ENDJOBTRC"
"ENDJRN"
"ENDJRNAP"
"ENDJRNOBJ"
"ENDJRNPF"
"ENDLINRCY"
"ENDMSF"
"ENDMGDSYS"
"ENDMGRSRV"
"ENDMOD"
"ENDNFSSVR"
"ENDNWIRCY"
"ENDPASTHR"
"ENDPEX"
"ENDPFRTRC"
"ENDTCPPTP"
"ENDPJ"
"ENDPRTEML"
;"ENDPGM"
"ENDPGMPRF"
"ENDRDR"
"ENDRCV"
"ENDRMTSPT"
"ENDRQS"
"ENDRPCBIND"
"ENDSRVJOB"
"ENDSBMCRQA"
"ENDSBS"
"ENDSYS"
"ENDSYSMGR"
"ENDS36"
"ENDTCP"
"ENDTCPABN"
"ENDTCPCNN"
"ENDTCPIFC"
"ENDTCPSVR"
"ENDTIESSN"
"ENDTRC"
"ENDTRPMGR"
"ENDUSF"
"ENDWTR"
"EXTMEDIBRM"
"FILDOC"
"GENLICKEY"
;"GOTO"
"GO"
"GRTACCAUT"
"GRTOBJAUT"
"GRTUSRAUT"
"GRTUSRPMN"
"GRTWSOAUT"
"HLDCMNDEV"
"HLDDSTQ"
"HLDJOB"
"HLDJOBQ"
"HLDJOBSCDE"
"HLDJOBJS"
"HLDOUTQ"
"HLDPTF"
"HLDRDR"
"HLDSPLF"
"HLDSBMCRQA"
"HLDWTR"
;"IF"
"INZBRM"
"INZPCS"
"INZDKT"
"INZDSTQ"
"INZMEDBRM"
"INZOPT"
"INZPFM"
"INZSYS"
"INZTAP"
"INSPTF"
"INSRMTPRD"
"LNKDTADFN"
"LODRUN"
"LODIMGCLG"
"LODPTF"
"LODQSTDB"
"GENCAT"
"MRGMSGCLG"
"MRGMSGF"
"MRGTCPHT"
"MGRBRM"
"MONMSG"
"MONSWABRM"
"MOV"
"MOVE"
"MOVDOC"
"MOVMEDBRM"
"MOVOBJ"
"MOVSPLFBRM"
"NETSTAT"
"OPNQRYF"
"ORDSPTPTF"
"OVRDBF"
"OVRDKTF"
"OVRDSPF"
"OVRICFF"
"OVRICFDEVE"
"OVRMSGF"
"OVRPRTF"
"OVRSAVF"
"OVRTAPF"
"PKGINSOBJ"
"PKGPRDDST"
"PKGPRDOPT"
"PING"
"POSDBF"
"PWRDWNSYS"
"PRTACTRPT"
"PRTADPOBJ"
"PRTAFPDT"
"PRTCMDUSG"
"PRTCMNSEC"
"PRTCMNTRC"
"PRTCPTRPT"
"PRTDEVADR"
"PRTDSKINF"
"PRTDOC"
"PRTERRLOG"
"PRTINTDTA"
"PRTIPSCFG"
"PRTJOBDAUT"
"PRTJOBRPT"
"PRTJOBTRC"
"PRTLBLBRM"
"PRTLCKRPT"
"PRTMEDBRM"
"PRTMOVBRM"
"PRTPEXRPT"
"PRTTCPPTP"
"PRTPOLRPT"
"PRTPVTAUT"
"PRTPRFINT"
"PRTPUBAUT"
"PRTQAUT"
"PRTRSCRPT"
"PRTSCDJS"
"PRTSWL"
"PRTSQLINF"
"PRTSBSDAUT"
"PRTSYSINF"
"PRTSYSRPT"
"PRTSYSSECA"
"PRTTRC"
"PRTTRCRPT"
"PRTTNSRPT"
"PRTTRGPGM"
"PRTUSROBJ"
"PRTUSRPRF"
;"PGM"
"QSH"
"QRYDST"
"QRYDOCLIB"
"QRYPRBSTS"
"QRYTIEF"
"RCVDST"
"RCVF"
"RCVJRNE"
"RCVMSG"
"RCVNETF"
"RCVTIEF"
"RCLACTGRP"
"RCLDDMCNV"
"RCLDLO"
"RCLLIB"
"RCLOPT"
"RCLRSC"
"RCLSPLSTG"
"RCLSTG"
"RCLTMPSTG"
"RLSCMNDEV"
"RLSDSTQ"
"RLSIFSLCK"
"RLSJOB"
"RLSJOBQ"
"RLSJOBSCDE"
"RLSJOBJS"
"RLSOUTQ"
"RLSPTF"
"RLSRDR"
"RLSRMTPHS"
"RLSSPLF"
"RLSSBMCRQA"
"RLSWTR"
"RMVACC"
"RMVALRD"
"RMVAUTLE"
"RMVAJE"
"RMVBNDDIRE"
"RMVBKP"
"RMVCCSCLT"
"RMVCRQDA"
"RMVCLUNODE"
"RMVCRGDEVE"
"RMVCRGNODE"
"RMVCMNE"
"RMVCOMSNMP"
"RMVCFGLE"
"RMVCNNLE"
"RMVDEVDMNE"
"RD"
"RMDIR"
"RMVDIR"
"RMVDIRE"
"RMVDIRSHD"
"RMVDSTCLGE"
"RMVDSTLE"
"RMVDSTQ"
"RMVDSTRTE"
"RMVDSTSYSN"
"RMVDLOAUT"
"RMVEMLCFGE"
"RMVENVVAR"
"RMVEXITPGM"
"RMVEWCBCDE"
"RMVEWCPTCE"
"RMVFTRACNE"
"RMVFTRSLTE"
"RMVFNTTBLE"
"RMVHSTJS"
"RMVIMGCLGE"
"RMVICFDEVE"
"RMVIPSIFC"
"RMVIPSLOC"
"RMVIPSRTE"
"RMVJOBQE"
"RMVJOBSCDE"
"RMVJOBJS"
"RMVJRNCHG"
"RMVLANADPT"
"RMVLANADPI"
"RMVLIBLE"
"RMVLICKEY"
"DEL"
"ERASE"
"RMVLNK"
"RMVLOGEBRM"
"RMVLOGEJS"
"RMVMEDIBRM"
"RMVMEDBRM"
"RMVM"
"RMVMSG"
"RMVMSGD"
"RMVMFS"
"UNMOUNT"
"RMVNTWAUTE"
"RMVNETJOBE"
"RMVNWSSTGL"
"RMVNETTBLE"
"RMVNCK"
"RMVNODLE"
"RMVOPTCTG"
"RMVOPTSVR"
"RMVPEXDFN"
"RMVPEXFTR"
"RMVPFCST"
"RMVPFTRG"
"RMVTCPPTP"
"RMVPJE"
"RMVPRFTKN"
"RMVPGM"
"RMVPTF"
"RMVPCLTBLE"
"RMVRDBDIRE"
"RMVRMTDFN"
"RMVRMTJRN"
"RMVRMTPTF"
"RMVRPYLE"
"RMVREXBUF"
"RMVRTGE"
"RMVSCHIDXE"
"RMVSVRAUTE"
"RMVSRVTBLE"
"RMVSOCE"
"RMVTAPCTG"
"RMVTCPHTE"
"RMVTCPIFC"
"RMVTCPPORT"
"RMVTCPRSI"
"RMVTCPRTE"
"RMVTCPTBL"
"RMVTRC"
"RMVTRCFTR"
"RMVUSFCNNE"
"RMVUSFDEVE"
"RMVUSFSVRE"
"RMVWSE"
"REN"
"RNM"
"RNMCNNLE"
"RNMDIRE"
"RNMDKT"
"RNMDSTL"
"RNMDLO"
"RNMJOBJS"
"RNMLANADPI"
"RNMM"
"RNMNCK"
"RNMOBJ"
"RNMTCPHTE"
"RGZDLO"
"RGZPFM"
"RPLDOC"
"RQSORDAST"
"RRTJOB"
"RST"
"RSTAPARDTA"
"RSTAUT"
"RSTAUTBRM"
"RSTCFG"
"RSTDLOBRM"
"RSTDLO"
"RSTLIB"
"RSTLIBBRM"
"RSTLICPGM"
"RSTOBJ"
"RSTBRM"
"RSTOBJBRM"
"RSTS36F"
"RSTS36FLR"
"RSTS36LIBM"
"RSTUSFCNR"
"RSTUSRPRF"
"RSMBKP"
"RSMCTLRCY"
"RSMDEVRCY"
"RSMHTTPCRL"
"RSMLINRCY"
"RSMNWIRCY"
"RSMRTVBRM"
"RTVAUTLE"
"RTVBCKUP"
"RTVBNDSRC"
"RTVCLSRC"
"RTVCLNUP"
"RTVCFGSRC"
"RTVCFGSTS"
"RTVCURDIR"
"RTVDTAARA"
"RTVDSKINF"
"RTVDOC"
"RTVDLOAUT"
"RTVDLONAM"
"RTVGRPA"
"RTVJOBA"
"RTVJRNE"
"RTVLIBD"
"RTVMBRD"
"RTVMSG"
"RTVNETA"
"RTVOBJD"
"RTVPWRSCDE"
"RTVPDGPRF"
"RTVPRD"
"RTVPTF"
"RTVQMFORM"
"RTVQMQRY"
"RTVSFWPKGA"
"RTVSWLSRC"
"RTVSYSINF"
"RTVSMGOBJ"
"RTVSYSVAL"
"RTVS36A"
"RTVTBSRC"
"RTVUSRPRTI"
"RTVUSRPRF"
"RTVWSCST"
;"RETURN"
"RVKACCAUT"
"RVKOBJAUT"
"RVKPUBAUT"
"RVKUSRPMN"
"RVKWSOAUT"
"ROLLBACK"
"RUNBCKUP"
"RUNJVA"
"RUNLPDA"
"RUNQRY"
"AREXEC"
"RUNRMTCMD"
"RUNSQLSTM"
"RUNSMGCMD"
"RUNSMGOBJ"
"SAV"
"SAVAPARDTA"
"SAVCHGOBJ"
"SAVCFG"
"SAVDLOBRM"
"SAVDLO"
"SAVFLRLBRM"
"SAVLIB"
"SAVLIBBRM"
"SAVLICPGM"
"SAVMEDIBRM"
"SAVOBJ"
"SAVOBJLBRM"
"SAVBRM"
"SAVOBJBRM"
"SAVSAVFDTA"
"SAVSAVFBRM"
"SAVSECDTA"
"SAVSTG"
"SAVSYS"
"SAVSYSBRM"
"SAVS36F"
"SAVS36LIBM"
"SAVUSFCNR"
"SAVRSTCHG"
"SAVRSTCFG"
"SAVRSTDLO"
"SAVRSTLIB"
"SAVRSTOBJ"
"SAVRST"
"SLTCMD"
"SNDBRKMSG"
"SNDEMLIGC"
"SNDDST"
"SNDDSTQ"
"SNDF"
"SNDFNCIMG"
"SNDJRNE"
"SNDLIC"
"SNDMSG"
"SNDNETF"
"SNDNETMSG"
"SNDNETSPLF"
"SNDPRD"
"SNDPGMMSG"
"SNDPTF"
"SNDPTFORD"
"SNDRPY"
"SNDRPTJS"
"SNDSRVRQS"
"SNDSMGOBJ"
"SNDTCPSPLF"
"SNDTIEF"
"SNDUSRMSG"
"SNDRCVF"
"SETASPGRP"
"SETATNPGM"
"SETCSTDTA"
"SETDEPJS"
"SETKBDMAP"
"SETMEDBRM"
"SETOBJACC"
"SETRTVBRM"
"SETTAPCGY"
"SETUSRBRM"
"SIGNOFF"
"STREML3270"
"STRARCBRM"
"STRASPBAL"
"STRBKUBRM"
"STRCLNUP"
"STRCLUNOD"
"STRCRG"
"STRCHTSVR"
"STRCMTCTL"
"STRCMNSVR"
"STRCMNTRC"
"STRCPYSCN"
"STRDBMON"
"STRDBRDR"
"STRDBG"
"STRDBGSVR"
"STRDIRSHD"
"STRDSKRGZ"
"STRDKTRDR"
"STRDKTWTR"
"STREDU"
"STREXPBRM"
"STRFMA"
"STRGRPJS"
"STRHOSTSVR"
"STRHTTPCRL"
"STRINFSKR"
"STRIDD"
"STRITF"
"STRIPSIFC"
"STRJS"
"STRJOBTRC"
"STRJRN"
"STRJRNAP"
"STRJRNOBJ"
"STRJRNPF"
"STRMSF"
"STRMNTBRM"
"STRMGDSYS"
"STRMGRSRV"
"STRMGRBRM"
"STRMOD"
"STRNFSSVR"
"STRNWSCSL"
"STROBJCVN"
"STRPASTHR"
"STRPEX"
"STRPFRG"
"STRPFRT"
"STRPFRTRC"
"STRTCPPTP"
"STRPJ"
"STRPRTWTR"
"STRPGMPRF"
"STRPGMMNU"
"STRQSH"
"STRQRY"
"STRQMPRC"
"STRQMQRY"
"STRQST"
"STRRCYBRM"
"STRRMTSPT"
"STRRMTWTR"
"STRREXPRC"
"RPCBIND"
"STRSCHIDX"
"STRSRVJOB"
"STRSBS"
"STRSBSBRM"
"STRSPTN"
"STRSYSMGR"
"STRSST"
"STRS36"
"STRS36PRC"
"STRTCP"
"STRTCPIFC"
"STRTCPSVR"
"STRTIESSN"
"STRTRC"
"STRTRPMGR"
"STRUSF"
"SBMCRQ"
"SBMDBJOB"
"SBMDKTJOB"
"SBMFNCJOB"
"SBMJOB"
"SBMJOBJS"
"SBMNETJOB"
"SBMNWSCMD"
"SBMRMTCMD"
"TRCASPBAL"
"TRCCNN"
"TRCCPIC"
"TRCICF"
"TRCINT"
"TRCJOB"
"TRCREX"
"TRACEROUTE"
"TRCTCPAPP"
"TRCTCPRTE"
"TFRBCHJOB"
;"TFRCTL"
;"TFRJOB"
"TFRPASTHR"
"TFRSECJOB"
"TFRGRPJOB"
"UPDPGM"
"UPDSRVPGM"
"UPDSYSINF"
"VRYCFG"
"APING"
"VFYAPPCCNN"
"VFYCMN"
"VFYIMGCLG"
"VFYLNKLPDA"
"VFYMOVBRM"
"VFYNTWAUTE"
"VFYOPT"
"VFYOPCCNN"
"VFYPRT"
"VFYTAP"
"VFYTCPCNN"
"WAIT"
"WRKACTJOB"
"WRKALRD"
"WRKALRTBL"
"WRKALR"
"WRKAPPNSTS"
"WRKASPBRM"
"WRKAUT"
"WRKAUTL"
"WRKBNDDIR"
"WRKBNDDIRE"
"WRKCALBRM"
"WRKCRQD"
"WRKCHTFMT"
"WRKCOSD"
"WRKCLS"
"WRKCLSBRM"
"WRKCMD"
"WRKCMTDFN"
"WRKCSI"
"WRKCFGL"
"WRKCFGSTS"
"WRKCNNLE"
"WRKCNNL"
"WRKCNTINF"
"WRKCNRBRM"
"WRKCTLGBRM"
"WRKCTLD"
"WRKDTAARA"
"WRKDTADFN"
"WRKDTADCT"
"WRKDTAQ"
"WRKDBFIDD"
"WRKDEVD"
"WRKDEVTBL"
"WRKDEVBRM"
"WRKDIRE"
"WRKDIRLOC"
"WRKDIRSHD"
"WRKDSKSTS"
"WRKDDMF"
"WRKDSTCLGE"
"WRKDSTL"
"WRKDSTQ"
"WRKDOCLIB"
"WRKDOCPRTQ"
"WRKDOC"
"WRKDPCQ"
"WRKEDTD"
"WRKENVVAR"
"WRKF"
"WRKFTRACNE"
"WRKFTRSLTE"
"WRKFTR"
"WRKFLR"
"WRKFNTRSC"
"WRKFORMDF"
"WRKFCNARA"
"WRKGSS"
"WRKHDWRSC"
"WRKHLDOPTF"
"WRKHSTJS"
"WRKHTTPCFG"
"WRKIMGCLGE"
"WRKIPXD"
"WRKJOB"
"WRKJOBD"
"WRKJOBQ"
"WRKJOBSCDE"
"WRKJOBJS"
"WRKJRN"
"WRKJRNA"
"WRKJRNRCV"
"WRKLANADPT"
"WRKLIB"
"WRKLICINF"
"WRKLIND"
"WRKLNKBRM"
"WRKLBRM"
"WRKLOCBRM"
"WRKMEDIBRM"
"WRKMLBBRM"
"WRKMLMBRM"
"WRKMLBRSCQ"
"WRKMLBSTS"
"WRKMEDBRM"
"WRKMNU"
"WRKMSGD"
"WRKMSGF"
"WRKMSGQ"
"WRKMSG"
"WRKMGRIBRM"
"WRKMODD"
"WRKMOD"
"WRKNTBD"
"WRKNTWAUTE"
"WRKNTWVOL"
"WRKNETF"
"WRKNWID"
"WRKNETJOBE"
"WRKNWSD"
"WRKNWSSTS"
"WRKNWSSTG"
"WRKNWSENR"
"WRKNETTBLE"
"WRKNCK"
"WRKNODLE"
"WRKNODL"
"WRKLNK"
"WRKOBJLCK"
"WRKOBJ"
"WRKOBJOWN"
"WRKOBJPGP"
"WRKOPTDIR"
"WRKOPTF"
"WRKOPTVOL"
"WRKOPCACT"
"WRKORDINF"
"WRKORDRQS"
"WRKOUTQD"
"WRKOUTQ"
"WRKOVL"
"WRKPAGDFN"
"WRKPAGSEG"
"WRKPNLGRP"
"WRKPEXDFN"
"WRKPEXFTR"
"WRKPFCST"
"WRKPFDL"
"WRKTCPPTP"
"WRKPCYBRM"
"WRKPSFCFG"
"WRKPRTSTS"
"WRKPRB"
"WRKPRDINF"
"WRKPGMTBL"
"WRKPGM"
"WRKPCLTBLE"
"WRKPTF"
"WRKPTFGRP"
"WRKQMFORM"
"WRKQMQRY"
"WRKQST"
"WRKRDR"
"WRKRCVCRQA"
"WRKRCYBRM"
"WRKREGINF"
"WRKRDBDIRE"
"WRKRMTDFN"
"WRKRTDCFG"
"WRKSAVFBRM"
"WRKFLRBRM"
"WRKOBJBRM"
"WRKSPLFBRM"
"WRKSCHIDXE"
"WRKSCHIDX"
"WRKSRVPGM"
"WRKSRVPVD"
"WRKSRVRQS"
"WRKSRVTBLE"
"WRKSHRPOOL"
"WRKSFWAGR"
"WRKSPADCT"
"WRKSOC"
"WRKSPLFA"
"WRKSPLF"
"WRKSBMCRQ"
"WRKSBMCRQA"
"WRKSBMJOB"
"WRKSBSD"
"WRKSBSJOB"
"WRKSBS"
"WRKSPTPRD"
"WRKSYSACT"
"WRKRPYLE"
"WRKSYSSTS"
"WRKSYSVAL"
"WRKS36"
"WRKS36PRCA"
"WRKS36PGMA"
"WRKS36SRCA"
"WRKTBL"
"WRKTAPCTG"
"WRKTCPSTS"
"WRKTIE"
"WRKUSFCNNE"
"WRKUSFDEVE"
"WRKUSFSVRE"
"WRKUSRJOB"
"WRKUSRPRF"
"WRKUSRTBL"
"WRKWTR"
))

(define-generic-mode 'ctrl-lang-mode
  nil
  nil                   ; Keywords
  (list                 ; Everything else.  Order matters.
;; Strings
   '("'[^']*'" . 'font-lock-string-face)
;; Comments
   '("/\\*.*\\*/" .      ; I think this works.
     'font-lock-comment-face)
;; Labels

'("address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@#\$_]?:"
     . 'font-lock-constant-face)
;; Line continuations
   '("[-+]$" . 'font-lock-warning-face)
;; Command shortcuts
   '("||" . 'font-lock-function-name-face)
   '("|<" . 'font-lock-function-name-face)
   '("|>" . 'font-lock-function-name-face)
;; For params that look like (*)
   '("(\\(\\*\\))" 1 font-lock-type-face)
;; Data thingie
   '("^//[ \\t]" . 'font-lock-builtin-face)
;; The list of keywords
   (generic-make-keywords-list command-list
                              'font-lock-function-name-face)
;; The giant list of CL commands
   (generic-make-keywords-list keyword-list
                               'font-lock-keyword-face)
;; Site-specific CL commands
   (generic-make-keywords-list site-commands
                              'font-lock-function-name-face)
;; Builtin variable recasters... or whatever you call them.
   '("%BINARY" . 'font-lock-builtin-face)
   '("%BIN" . 'font-lock-builtin-face)
   '("%SST" . 'font-lock-builtin-face)
   '("%SUBSTRING" . 'font-lock-builtin-face)
   '("%SWITCH" . 'font-lock-builtin-face)
;; Prompt operators
   '("[ \t]\\?[<*&%?]?" . 'font-lock-warning-face)
;; Math operators
   '("[ \t][-*/+=][ \t]" . 'font-lock-builtin-face)
;; Variables

'("&address@hidden@address@hidden@address@hidden@address@hidden@address@hidden@#\$\._]?"
     . 'font-lock-variable-name-face)
;; Params
   '("\\*[A-Z][A-Z]*" . 'font-lock-type-face))
  nil                   ; File associations.  Can't use.
                        ; Use mode line string instead.
  (list (function
         (lambda ()     ; I think this makes font-lock
                        ; case insensitive
           (make-local-variable 'font-lock-defaults)
           (setq font-lock-defaults
                 (list
                  'generic-font-lock-defaults nil t)))))
"Generic mode for AS/400 Control Language files.
Syntax highlighting (almost) only.

\\[ctrl-lang-add-mode-line]
`ctrl-lang-add-mode-line' -- Add a magic mode line for the
                             mode to the start of the buffer
                             \(embedded in a CL comment.\)
\\[ctrl-lang-get-doc]
`ctrl-lang-get-doc'       -- Use browse-url to get IBM's
                             online documentation page for
                             the selected CL command.
\\[ctrl-lang-get-syntax]
`ctrl-lang-get-syntax'    -- Use browse-url to get IBM's
                             online syntax diagram page for
                             the selected CL command.
")

(add-hook 'ctrl-lang-mode-hook 'auto-fill-mode)
(add-hook 'ctrl-lang-mode-hook 'ctrl-lang-env-setup)

(provide 'ctrl-lang)

;;; ctrl-lang.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]