# XEDIT

XEDIT is a visual editor for VM/CMS using block mode IBM 3270 terminals. (Line-mode terminals are also supported.)
XEDIT is much more line-oriented than modern PC and Unix editors. For example, XEDIT supports automatic line numbers, and many of the commands operate on blocks of lines. A pair of features allows selective line and column editing. The ALL command, for example, hides all lines not matching the described pattern, and the COL (Column) command allows hiding those columns not specified. Hence changing, for example, the word NO as it appears only in columns 24 thru 28, to YES, and only on lines with the word FLEXIBLE, is doable.
Another feature is a command line which allows the user to type arbitrary editor commands. Because IBM 3270 terminals do not transmit data to the computer until certain special keys are pressed [such as ↵ Enter, a program function key (PFK), or a program access key (PAK)], XEDIT is less interactive than many PC and Unix editors. For example, continuous spell-checking as the user types is problematic.

## Typical screen layout

Notable features of the screen layout:
* The top line provides details about line format where:
** MOHICANS is the filename
** SCRIPT is the filetype
** A1 is the filemode (default, indicating which disk the file is on)
** V is the record format (RECFM) which can be Fixed or Variable
** 132 is the length of the records (for V, maximum length is 65535)
** Trunc=132 indicates changes beyond 132 columns will be ignored
** Size=10 denotes total number of lines in file
** Line=10 denotes the current line
** Col=1 denotes the current column
** Alt=10 indicates that ten changes have been made while XEDITing
* The equal signs ===== at the beginning of the lines provide space for line numbers if desired, and a place to enter XEDIT prefix commands that may operate on blocks of lines.
* The line beginning |...+ is a ruler that e.g. might show tabulator positions.
* The following line marks end-of-file, appearing in XEDIT as if it followed the last actual line of the file.
* The next-to-bottom line showing ====> is a command line for entering XEDIT or system (CP/CMS) commands or macros.
* There is no mouse pointer because most IBM 3270 terminals did not have mice.
* Most IBM 3270 terminals had 12 or 24 program function keys (PFKs) (and also two or three program assist keys), to which XEDIT commands or macros could be assigned.
* XEDIT commands can be used to change the screen appearance. Some examples include:
** Moving the position of (or eliminating) the command line
** Moving the position of (or eliminating) the TABS marker line
** Moving the position of (or eliminating) the PREFIX lines
** Changing the prefix line from equal signs (=====) to line numbers (nnnnn)
** Defining whether or not TAB characters are to be expanded
** Defining which lines are to be displayed by scope (SELECT)
** Showing the data on a display screen or in typewriter mode
** Specifying text line(s) to be displayed on the screen (RESERVED)
** Eliminating the TOFEOF lines (* * * Top of File * * * —and— * * * End of File * * *)
** Displaying (or eliminating) SHADOW lines (indications that lines are not being displayed)
** Displaying (or eliminating) the SCALE line (a scale or ruler to assist editing)
** Changing the background and foreground colors used for the different portions of the screen
** Defining what lines are to be displayed (RANGE)
** Defining what columns are to be displayed (and also, if in hexadecimal, text, or both)
** Defining multiple XEDIT screens [sizes, location (over/under, side by side, combinations)]

## Macro language

XEDIT macros (scripts) can be written in Rexx, ooRexx, EXEC 2, or EXEC. XEDIT exposes the majority of its internal state to the macro environment, allowing macros to easily read and set internal variables that control its operation.

### KEXX

KEDIT 5 for DOS and OS/2 supports an external Rexx interpreter (native OS/2 Rexx or Quercus Rexx, for DOS only Quercus Rexx replacing the older Mansfield Rexx) and its own rather limited KEXX subset. KEDITW 1.6.1 for Windows supports only its own internal KEXX 5.62 version of the Rexx language. Macros can be arranged in the .kml file format.

## History

XEDIT was written by IBM employee Xavier de Lamberterie and was first released in 1980. Its predecessor was EDIT SP (SP is an initialism for System Product used by IBM). Other key influences were EDIT, the older editor for CMS, and EDGAR, an IBM Program Product editor for CMS. XEDIT supported many of the EDGAR commands, SOS (Screen Output Simulation) being a major one. XEDIT also supported EXEC 2, the predecessor of Rexx.

## PC and Unix adaptations

When PCs and Unix computers began to supplant IBM 3270 terminals, some users wanted text editors that resembled the XEDIT they were accustomed to. To fill this need, several developers provided similar programs:

### KEDIT

KEDIT by Mansfield Software Group, Inc., was the first XEDIT clone. Although originally released in 1983, the first major release was version 3.53 for DOS, released in 1985. By 1990, KEDIT 4.0 had a version supporting OS/2, and included the ALL command.
The last version for DOS and OS/2 was KEDIT 5.0p4. KeditW (for Windows) is at version 1.6.1 dated December 2012. Some earlier Windows versions were:
* Release being 1.5 service level 3, dated January 1998
* Version 1.6, dated December 2007
KEDIT 1.6 supports syntax highlighting for various languages including C#, COBOL, FORTRAN, HTML, Java, Pascal, and xBase defined in the .kld file format.
KEDIT supports a built-in Rexx-subset called KEXX. Mansfield Software created the first non-IBM implementation of Rexx (Personal Rexx) in 1985.
In December 2012 Mansfield Software released 1.6.1 to provide compatibility with Windows 8 and extended support to at least June 2015. These 32bit versions work also in the 64bit versions of Windows 7 and Vista, but do not directly support Unicode. As of December 2022, Kedit supports Windows 10 and 11 too, and Mansfield promises email support until at least June 2024.

### SEDIT

SEDIT (first released in 1989) is another implementation on both Windows and Unix, which supports a variant of Rexx language called S/REXX (announced in 1994).

### THE (The Hessling Editor)

The Hessling Editor (THE) is an open source text editor first released in August 1991; 33 years ago (1991-08), released under the GPL-2.0-or-later license, and available for many operating systems including QNX, OS/2, DOS, BeOS, Amiga, Windows 95/98/Me/NT/2000/XP and most or all POSIX Unix platforms (as a program for text-mode or native X11). THE is a derivation of the IBM Mainframe VM/CMS editor XEDIT that includes support for versions of the REXX scripting language, and takes some features from KEDIT. THE was written in C with PDCurses also required for some platforms. A REXX interpreter such as Regina is also required for THE's REXX macro capability.
THE's author, Mark Hessling, discussed at the 1993 REXX conference in La Jolla, California why he created a new multi-platform text editor.