═══ 1. Description ═══ (C) Copyright International Business Machines Corporation 1993. All rights Reserved. Augustus MMDCCXLV AUC IBM United Kingdom Laboratories Ltd. This is a simple 32-bit, configurable, multi-document, highlighting editor version of the software analysis programmes which were written together with the CMS programme ANALYSE in order to establish the prСcognita for the CICS restructure project. This version has been written using C Set/2 and MASM V6.0. The programme 'ALPHA.EXE' should be copied to an OS/2 V2.x or V3.x directory. The Alpha Fonts may be used if the files 'ALPHA.FON' 'ALPHAA__.AFM', 'ALPHAA__.PFB', and 'ALPHAA__.PFM' are copied to an OS/2 directory and installed. provides basic browse and edit functions, as well as analysis for language types :- A37,ASM,PAS,(PLS,PLX,PLI),(C,CPP,H),FOR,.. {Other languages or file extensions may be defined.} The syntax of Alpha is :- START ALPHA [file] [file] .. [/p [profile name - default ALPHA.PRF]] A file may be opened from the Allocate menu or by dragging mouse button 2 with the Ctrl key pressed from a Drives window on to the Alpha window. The mouse buttons may be used to isolate a string and to search for the string within the file. Edit/browse commands may also be entered from the command window, Tool bars or keyboard. A profile may be specified to define or modify the language highlighting and analysis. ═══ 1.1. Features ═══ This version of Alpha provides the following features :-  Basic browse and edit functions. - Copy, cut and paste. - Box mode {column mode} select as well as line mode. - Special character insert for diagrams etc.. - Display characters at the current cursor position in Hex and instructions.  Invokes the appropriate compiler.  Cross-references labels.  Searches files in a directory for a string.  Displays the program call structure.  Highlights keywords, comments etc..  Suppression of selected lines.  Suppression of comments.  Matches BEGIN/END pairs.  Record/playback keystrokes.  Expands the procedure call in a secondary window.  Search of compiler include paths.  Conversion to upper or lower case.  Clearing selected areas to blanks.  Tab expansion.  Customization for highlighting and language support.  Bookmark support.  Analyse 32-bit ".EXE" and ".DLL" files and dis-assemble the code object.  Display a file in hexadecimal and characters.  Automatically save a file after n changes.  User specified maximum backout level.  Automatically indent new lines.  Compare two files and create a composite file.  Edit/analyse an arbitrary number files with arbitrary record lengths at a time.  A simple Hex/Dec. calculator. ═══ 2. Installation ═══ The minimum requirement is to transfer the binary file 'ALPHA.EXE' to an OS/2 directory on your PC. If you want different keyword colours etc. you can edit the file 'ALPHA.PRF' and specify the parameter /p. Other colours, fonts, etc. are set by the Configure option. You can also install the 'Alpha' fonts by transferring the binary files 'ALPHA.FON', 'ALPHAA__.AFM', and 'ALPHAA__.PFB', 'ALPHAA__.PFM' to an OS/2 directory on the PC and selecting 'System Setup' from 'OS/2 System' and using 'Add' in the 'Edit font' of the 'Font Palette'. If you wish to access files from the host then you should also install a Transfer_pgm such as ALMCOPY. If you wish to access the OS/2 help file, ALPHA.HLP, it must be installed in the HELP path, e.g. the C:\OS2\HELP directory. ═══ 2.1. Parse exit module ═══ An optional procedure may be provided in a DLL which will be called when the child window text is being written. If the DLL, ALPHAE.DLL, has been provided in the LIBPATH then the procedure Alpha_parse_exit will be called from the WM_PAINT child window call. A sample source module ALPHAE.C is provided which may be used to create a DLL with a parser exit module. The text can be written out by the DLL module. ═══ 3. Menu ═══ The following menu items are available :- Item Description Allocate Will invoke the Allocate. dialogue box which may be used to open a file, invoke the Transfer programme or save the profile name. Command Will create the command dialogue box which may be used to issue a search command. Options Will allow the following options to be set :- Status bar, Tab, Line No., Keyword, Include, Grid, Box, Tool bar. Print Will invoke the print dialogue box. Window Will invoke the window selection dialogue box. Configure Will invoke the Configure Notebook. Help Will invoke the About dialogue box, the Help summary window, and the OS/2 extended help function. ═══ 3.1. Allocate ═══ The Allocate dialogue box may be used to :- 1. Request a file to be read. If the drive letter is changed then the OK button should be used to refresh the List boxes. { The maximum number of child windows is limited to the amount of available storage. If the file size is greater than 8Mbytes then a prompt will be issued to allow a part of the file to be read. } a. A file name may be entered in the Combo Box. b. A file name may be selected from the file List Box. 2. Create a new file. The Create button uses the contents of the Combo box to set the default file name when creating a new file. 3. Transfer a file. The Transfer button will pass the contents of the Combo box to the Transfer_pgm. {The data is passed to the Transfer_pgm unmodified.} 4. Change the current directory. Select the required path and press the Cancel button. The SetDir button will set the current directory from the Combo box. ═══ 3.2. Command ═══ The Command dialogue box may be used to issue a search command e.g.  Case sensitive search for a string.  Case sensitive search for a string in column one. {Specify a pattern character (wild) e.g. 'TCT*EI' as a search argument for a forward search and specify '*' in the Pattern Chr. entry box.}  A non-case sensitive search for a string, { Normal }.  Set the search mode to backwards.  Move to a given line number, { Goto }.  Replace the text at the current cursor position with the text from the Replacement Text Entry Box.  Replace all - repeat to end-of-file replacing the text at the current cursor position with the text from the Replacement Text Entry Box and locate the next string. The search starts from the current cursor position +1. To enter special characters use Alt + three digit number from the numeric keypad, e.g. Alt+048. The COMBO box will hold the previous three search strings which were successfully entered. ═══ 3.3. Options ═══ The Options menu may be used to set the following options :- Option Description Status bar Display the status bar, at the bottom of the main window. Tab Expand the record by using X'09' characters to round to columns n*( Tab interval). If the file is saved with this option set then the file will be written with the tab characters expanded. Line No. Display the line number to the left of the record. Keyword Highlight the keywords, comments, strings etc.. Include For the files MASM, PAS, PLS, C read the include files specified by :- include file_name, {$INCLUDE : 'file_name' }, %INCLUDE first_part_of_file_name;, #include , respectively when expanding a call etc. {The current directory together with the paths defined by the INCLUDE environment variable will be searched. The total number of open files/windows is limited to the available storage so the include nesting can not exceed the storage available. For language 4, PL/S, the file extension is appended to the first_part_of_file_name. } Grid Draw vertical grid lines through every tenth character in Grid colour and flag lines greater than 80 characters long. {Lines longer than 256 characters will be flagged with the highlight colour, split for display and rejoined when saved.} Box Switch the select area to a box format. Tool bar Display the Tool bar. ═══ 3.4. Print ═══ The Print menu item allows the printing of either the selected range of records or the whole file as plain text or as formatted output with highlighting etc.. 1. The Print option will send unformatted text to one of :- LPT1, LPT2, LPT3. 2. The Formatted option will allow the Font to be selected for the printer output, Setup the other printer attributes, or Print the formatted text to the selected printer. If a range of records has been selected by dragging the mouse with button one down then this range will be used in the print dialogue box. The default record range is the whole file for straight text printing, and selected lines for formatted output. For Formatted printing invoke the Setup option before the Print. ═══ 3.5. Window ═══ The Window menu will give access to the following :- Item Description Cascade Will arrange the child windows so that the title text is visible. Tile Will arrange the child windows so that a partial view of each child may be seen. Close All Will close all child windows. Select Window Will show the selected window, to make any child window the top child window. {If the window title is selected from the List box then that child window will become the active/visible one.} File name The first sixteen child windows may be selected to become the top child window. ═══ 3.6. Configure ═══ The Configure Notebook may be used to modify the text colour, the text font or configure the Tool bar; it contains the following pages :- 1. C - Set the text colours. 2. F - Set the text font. 3. P - Set the Autosave values. 4. T - Configure the Tool bar. ═══ 3.6.1. Font ═══ The Font dialogue box, which may be chosen from the Configure Notebook page F, may be used to change and remember the font. Outline fonts are not selectable except for Alphaa. The Alpha fonts may be used if they have been installed. ═══ 3.6.1.1. Fonts ═══ A monospaced font, Alpha, with point sizes 8,9,10,11,16 & 20 is supplied with the ALPHA PACKAGE, which may also be used. The Alpha font will be selected by default or may be chosen from the Configure Notebook page F . To install the Alpha fonts on OS/2 V2.x select 'System Setup' from 'OS/2 System' and use 'Add' in the 'Edit font' of the 'Font Palette'. The font point sizes (1/72") are :- Courier (8,10,12), Roman (8,10,12,14,18,24), Helvetica (8,10,12,14,18,24), System (8,10,12, {8x8, 8x16, 9x20}), "Alpha" (8{8x12}, 9{9x10}, 10{8x14}, 11{11x12}, 16{12x16}, 20{12x20}). A fixed pitch printer font, Alphaa ,has also been supplied. Alphaa is an Adobe Type 1 (printer) font based on the Alpha (20 point) raster font with non-alphanumeric characters displaying as hexadecimal pairs. This font is not intended for normal display editing. ═══ 3.6.2. Colours ═══ The colours of the text, comments etc. may be changed and remembered by using this dialogue box. The following colours may be changed :- 1. Text - The main text colour and Structure List box calls. 2. Comment - The Comment colour. 3. Select - The mouse button 1 drag area text colour. 4. String - The string text colour. 5. Highlight - The mouse button 1 isolate keyword colour and the Structure List box procedures. 6. Highlight1 - The first mouse button 1 isolate keyword colour from the Pop-up menu. 7. Highlight2 - The second mouse button 1 isolate keyword colour from the Pop-up menu. 8. Locate - The mouse button 2 locate string. 9. Branch - The Branch/Jump instruction colour. 10. Grid - The vertical grid line colour. 11. Help balloon - The Tool bar Help balloon background colour. 12. Line number - The colour for line numbers. 13. Modified - The text of modified lines. 14. File one - The unique text of the first file compared. 15. File two - The unique text of the second file compared. 16. Indent area - The background colour of the line indent area before the record. Note: The Foreground radio button should be checked to set the foreground colour. The Background radio button should be checked to set the background colour. The Underline check box should be set to specify the underline font. The values for COLOUR1 etc. are set by selecting the colour and adjusting the sliders. The value is remembered when the Set button is pressed. The sliders are active for the particular COLOURn selected. ═══ 3.6.3. Preferences ═══ Set the autosave values for backing up the files. 1. The Autosave extension entry box specifies the file extension for the automatic save of files. 2. The No. changes before autosave entry box specifies number of changes to be made to a file before the backup file is written. 3. The Maximum backout level specifies the maximum number of changes which can be backed out. Note: Memory is reserved for each backout level, and some operations require two backout actions. 4. The Cursor width specifies the width of the insert cursor. The default is 0 which uses SV_CYBORDER. 5. The Indent area width specifies the indent area size on the left of the record. If <6 then (Character width)*2/3 is used. 6. The Default language entry box specifies the language extension to be assumed if the file does not have an extension. 7. The Default extension entry box specifies the language extension to be assumed if the file has an extension but it has not been specified in File_type. 8. The Automatic indent check box will cause the cursor to be set to the character position of the start of the previous line when a New line character is entered past the end of the text. 9. The Bookmark text check box will cause a request for less than 16 characters to be specified to identify the bookmark when Alt+n is pressed. The default is the line number. The text may be displayed by pressing mouse button 2 on the bookmark number in the Status bar. 10. The Insert tabs check box will cause the tab key to insert tab characters rather than a sequence of spaces. 11. The Move select area check box will allow a select area to be moved by dragging the mouse with button 1 down. 12. The Tab interval entry box may be used to set the tab interval. 13. The Read line break will specify how the file will be broken into records; by examining the first record (auto), by carriage return line feed, line feed or by record size. 14. The Save line break will specify how the file records will be written back; by appending carriage return line feed, line feed or by record size. 15. The Edit button will edit and remember the Profile for subsequent invocations. A null file name will remove the saved profile name. {This will obviate the need for the '/p' parameter and enable a file to be dropped on to the unstarted programme. The file name should contain a fully qualified path.} 16. The Set button will accept the values and save them in OS2.INI except for the line break values. 17. The Cancel button will dismiss the notebook without saving the changes. Note: The second page of the Preferences section may be reached by the Page Down button. ═══ 3.6.4. Configure Tool bar ═══ The Configure Tool bar dialogue box, page "T" of the Configure Notebook, may be used to Delete or Add buttons to the Tool bar and to change its size and orientation. The Configure Notebook may be invoked from the main window menu.  The Buttons List box contains the available buttons; one should be selected and the Add button pressed to add it to the Tool bar. {The text of the Buttons already in the Tool bar is displayed halftone}.  The Tool bar List box shows the current list of buttons in the Tool bar; one should be selected and the Delete button pressed to remove it. If one is selected when adding a new button the new button will be inserted at that point otherwise it will be inserted at the end.  The Entry box displays the current button size which may be changed. Three bitmap sizes are provided, viz. 22x22, 32x32 and 64x64; intermediate values are created by stretching the bitmap. After setting the size Alpha should be restarted to load the correct bitmaps.  The Horizontal and Vertical Radio buttons will cause the Size Entry box to be read and the floating Tool bar to be reconstructed.  The Menu Radio button will cause the Tool bar to be placed in a menu bar the next time Alpha is started.  The Configure button will cause the changes to be applied.  The Cancel button will cause the changes to be ignored. The new Tool bar structure will be remembered when the Configure button is pressed. If the Tool bar is changed from floating to menu then Alpha should be closed and restarted. If the Tool bar is in the menu the order of the buttons may also be changed by dragging the mouse with button 2 down. ═══ 3.7. Help ═══ The Help menu will display the About, box the Help summary window or access the OS/2 help file ALPHA.HLP via Extended. ═══ 3.7.1. Help window ═══ This window may be invoked by the F1 key or by selecting the Help item from the Help menu item. The window may be scrolled by :- 1. Page_up - scroll up 1 window 2. Page_down - scroll down 1 window 3. Home - scroll to the top of the Help data 4. End - scroll to the end of the Help data 5.  - scroll down one line 6.  - scroll up one line The Extended help data may be accessed from the Extended item of the Help menu. ═══ 4. Mouse buttons ═══  Mouse button 1 1. single click a. No other key pressed. 1. Outside a select area, set the cursor position and repaint window. 2. Within the select area, move the select area by dragging the mouse with button 1 down. b. With Ctrl key down. A Pop-up menu will be displayed which will allow either, the string to be highlighted (alternate highlight colours Highlight1 or Highlight2), the next five instructions to be displayed, the highlighted label to be expanded, set the grid column using the grid background colour, the record to be marked as continued from the previous, display the Select character or Edit dialog box. c. With Shift key down Extend the current select area to the new cursor (mouse) position. 2. Double click a. No other key pressed. Highlight the string under the cursor and mark it as selected. If mouse button 1 is clicked twice on a BEGIN for PASCAL, DO for PLS or { for C then the code up to the following END etc. will not be displayed. These lines may be restored by double clicking on the suppressed line, or by F12. If button 1 is clicked twice on an Include statement when the Include option is selected then a second window will be created with the include file. b. Before start of record will select the whole line. c. With Shift key down, Only highlight the string.  Mouse button 2 1. single click a. No other key pressed. Will cause a case sensitive search for this string from the current cursor position +1. {The direction is set by the check box in the Command dialogue box.} b. With Ctrl key down Will cause a non-case sensitive search for this string from the current cursor position +1 c. With Shift key down. A search from the top of the file is made for the label definition or procedure entry and a secondary window is opened, Expand. {The language structure tables are searched first so if you have specified some structure keywords via. Operator then you will have to record the structure first, Ctrl+s.} The mouse button 1 may be used to scroll and select a section of the file. ═══ 5. Function keys ═══ F1 will open the Help window. F2 will open the Configure Notebook. F3 will terminate the programme. F4 will open the Allocate or file dialogue box. F5 will repeat the previous command. F6 will open the Command dialogue box. F7 will scroll the window up 1/2 a window. F7+Shift will scroll the window left 1/2 a window. F8 will scroll the window down 1/2 a window. F8+Shift will scroll the window right 1/2 a window. F12 will reset the Collapse of BEGIN/END pairs etc. and place the cursor at the top left in the window. F12+Shift will clear the bookmarks for the active window. Page_Up will scroll up 1 window. Page_Down will scroll down 1 window. Home+Ctrl will scroll to the top of the file. End+Ctrl will scroll to the end of the file. End will position the cursor to the end of line. Enter will repaint the current child window, and reset the cursor to the leftmost position. Backspace will delete one character to the left of the cursor.  - will scroll down one line. {+Ctrl will scroll to the next bookmark or difference in composite files, +Alt will move a line mode select area block down.}  - will scroll up one line. {+Ctrl will scroll to the next bookmark or difference in composite files, +Alt will move a line mode select area block up.}  - will scroll right one column. {+Alt will move a Box mode select area to the right.}  - will scroll left one column. {+Alt will move a Box mode select area to the left.} Note: Hold the Shift key down to select an area with the arrow keys. The Tab key will advance the cursor to the next tab position, (n*(Tab interval)). The Tab+Shift keys will reset the cursor to the leftmost position; before the start of the line. The Tab+Ctrl keys will select the next child window. The Insert key will toggle the Insert/Overwrite mode for modifying characters in the Child window at the current cursor position. The Insert+Shift keys will insert records from the Clipboard at the current cursor position. The Ctrl+Insert keys will copy the lines highlighted by the button 1 drag area to the Clipboard. The Delete key will delete the character or the select area at the current cursor position. The Delete+Shift keys will delete the select area at the current cursor position and copy it to the Clipboard. The Ctrl+Space keys will clear the selected area to blanks. The Ctrl+b keys will restore the previous text; may require two operations. The Ctrl+c keys will suppress/display the comments in a language file. If a single line is scrolled then the comment suppression will be disabled. The Ctrl+Shift+c keys will compile the current file. The Ctrl+d keys will dis-assemble an EXE or DLL file window containing an LX structure {OS/2 2.x} and create a new child window with the code object dis-assembled. The Ctrl+e keys will expand the currently highlighted string. The Ctrl+Shift+e keys will edit the current line. The Ctrl+f keys will compare two files and create a composite file. The Ctrl+g keys will create a dialogue box which may be used to search the current directory for a string. The Ctrl+h keys will suppress/restore the lines highlighted by the button 1 drag area from the display. The Ctrl+i keys will highlight the keyword at the cursor. The Ctrl+Shift+i keys will make a locate argument from the highlighted string. The Ctrl+k keys will start the calculator. The Ctrl+l keys will switch to/from Box/line mode select. The Ctrl+m keys will move the cursor to the matching end bracket. The Ctrl+p keys will playback previously recorded keystrokes. The Ctrl+r keys will switch on/off recording of keystrokes. The Ctrl+s keys will record and display the programme structure. The Ctrl+Shift+s keys will save the last active window/file in the file name specified in the Entry box. The file name may be changed to specify a path e.g. F:\TEMP\ALPHA2.C The Ctrl+u keys will convert the selected area to upper or lower case depending on the first character. The Ctrl+x keys will display the record references to the highlighted label. If an entry is selected the last active child window will be scrolled to that line. The Ctrl+z keys will convert the last active child window file to hexadecimal and display as a new window. The Ctrl+n keys will move to a recorded bookmark in the file. {Where "n" is one of the numeric keys 0-9.} The Alt+n keys will record a bookmark in the file. These will be displayed when the Grid option is chosen. ═══ 6. Profile ═══ The following keywords may be specified in the profile :- [xyz] The file extension. This starts a section defining a language. Case This marks a language as case sensitive or not. CommentPos Specifies the column number of a fixed comment; 0, 1-n, Language Specifies the structure of the language, viz. FORTRAN, A37, ASM, C, none, default. Comment specifies two start and end character pairs for comments. String specifies two start and end character pairs for strings, and an optional escape character. Tab specifies up to eight fixed tab positions, separated by commas. Further tab characters are based on a multiple of the Tab interval specified on the Preference page of the Configuration Notebook. The default values for ASM are 10,16,36,42 and for C are 8,16,24,36,42,72. Keywords defines the highlight colours for keywords. Defined as follows :- keyword,colour and are terminated by .END, invalid entries are ignored. The case and spaces within the keyword are significant, {the first character of the keyword is used for the initial scan so a leading space will slow down the screen refresh rate}. The keywords must be <=128 characters. Keywords longer than one character are assumed to be delimited by non-alphanumeric characters. If the language is not case sensitive then the keyword should be specified in upper case ! Only the text part of the record is scanned for keywords. {The structure of continued comments and strings is learnt as the file is scrolled forward !} Extension specifies the File types to be recognized. The string must be <=128 characters and terminated by a comma. The following language types are recognized :- 1. A37 - 370 assembler. 2. ASM - MASM 386 assembler. 3. C - C language. 4. FORTRAN - FORTRAN language. 5. default - Algol like. 6. none - no comment or string highlighting. Operator defines the operator keywords for each language. The second value indicates how to process the keyword, viz. '<' or '>' indicate the scan direction from the keyword to locate the label 'P' or 'C' indicates that the keyword specifies an entry point or call, ':' indicates that the label will be followed by a colon, '2' indicates that the second label following a ',' is to be used. Entries may be defined as follows :- file_type,<|>C|P[:][2],keyword and are terminated by .END, invalid entries are ignored. The keywords must be <=128 characters. Keys Keys specifies a list of functions which may be assigned to alternate keybord keys. The values may be 'Ctrl+a' or 'Ctrl+Shift+A' where 'a' is a character. The list is terminated by .END, e.g. Keys ;; Accelerator keys Backout=Ctrl+z ;; Backout BoxLine=Ctrl+l ;; Toggle Box/Line mode select Bracket=Ctrl+m ;; Match brackets Calculator=Ctrl+k ;; Invoke calculator CommentSup=Ctrl+Shift+H ;; Suppress comments Compare=Ctrl+Shift+F ;; Compare files Compile=Ctrl+c ;; Compile ConvertCase=Ctrl+u ;; Convert to/from upper/lower case DisAsm=Ctrl+d ;; Disassemble EXE and DLL Edit=Ctrl+Shift+E ;; Edit line Expand=Ctrl+e ;; Expand label Hex=Ctrl+h ;; Display original file in Hex Highlight=Ctrl+i ;; Highlight label under cursor HighlightSup=Ctrl+y ;; Suppress highlighted lines LocateHigh=Ctrl+Shift+I ;; Make locate argument of highlighted label Playback=Ctrl+p ;; Playback Record=Ctrl+r ;; Record SaveFile=Ctrl+Shift+S ;; Save File Search=Ctrl+g ;; Search directories Structure=Ctrl+s ;; Display structure XREF=Ctrl+x ;; Search children for strings ·END ;; TransferPgm specifies the programme name to be invoked from the Allocate menu when the Transfer button is pressed. ═══ 6.1. Specifying a language ═══ Alpha has within it (hard coded) routines which understand certain language features e.g. 370 Assembler procedures are invoked by BAL, BAS etc.. The following language types are understood by Alpha, viz. :- 1 A37 - 370 Assembler 2 ASM - 386 MASM asembler 3 C - C language 4 FORTRAN - FORTRAN language 5 default - Algol like 6 none - no comment or string analysis etc. However, you can interpret any language/file type (use the highlighting facility) by suppling extra definitions in a profile which is specified as a parameter to Alpha e.g. START ALPHA /p profile_name A sample profile (ALPHA.PRF) is provided in the package, which includes comments explaining the use of the keywords. This may be edited to change/add a file extension, highlighting and programme structure by modifying the following keywords :- Extension - list of file extensions up to 128 characters Comment - Two comment start character pairs (blank is ignored) String - Two string delimiter characters, and escape character (blank is ignored) Tab - Up to eight fixed tab values. Language - [A37,ASM,C,FOTRAN,none,default] Keywords - list of keyword definitions keyword,colour Operator - list of operator definitions file_type,attributes,keyword e.g. to add language XYZ with a routine call 'ICALL routine_name' with a structure similar to PLS. Extension="A37,ASM,PAS,XYZ,C,FOR," [XYZ] Case=No ;; not case sensitive Comment="-- "" String="" ' " ' ",\ Language=default CommentPos=0 ;; Free format comment Kewords ICALL,GREEN Next_key ,(RED,YELLOW,UNDERLINE) .END Operator XYZ,>C,ICALL .END The Alpha programme scans the keyword table in the order specified in the profile. ═══ 7. Tool bar ═══ The Tool bar may be used to set an option etc. quickly. The following buttons are available :-  - Hide/re-instate highlighted records from display.  - Display/Create the structure List box.  - Toggle the line number display.  - Cascade Child windows.  - Tile Child windows.  - Toggle Tab expansion.  - Toggle Include option.  - Repeat last Locate command.  - Display the record references to the highlighted label.  - Suppress/display the comments in a language file. If a single line is scrolled then the comment suppression will be disabled.  - Expand the currently highlighted label.  - Save the file using the file name from the Entry box.  - Compile the file with the command selected from the COMBO box.  - Copy highlighted records to Clipboard.  - Copy the selected records to the Clipboard and erase from memory.  - Insert records from the Clipboard at the current cursor position.  - Delete the selected records from memory.  - Re-insert the last deleted records.  - Clear the select area to blanks.  - Switch the select area to/from a box format.  - Convert the selected area to upper or lower case depending on the first character.  - Search the current directory for a string.  - Compare files and create a composite file.  - Playback previously recorded keystrokes.  - Switch on/off recording of keystrokes.  - Select the next child and make it active. If mouse button 2 is held down on a button then a small help balloon will be displayed. The structure of the Tool bar may be modified by using the Configure Tool bar page of the Configure Notebook. If the Tool bar is in the menu then the buttons may be moved by dragging the mouse with button 2 pressed and releasing it over the new position. If the Tool bar is too large for the menu then the MINMAX menu will contain < > to allow the Tool bar to be scrolled. ═══ 8. Errors ═══ The Following is a list of error numbers produced by Alpha. ╔═════════╦═════════╦════════════════╦══════════════════════════════════════╗ ║ Error_No║ Module ║ Procedure ║ reason ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 1 ║ Alpha11 ║ DrawText ║ Invalid record pointer in WM_PAINT ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 2 ║ Alpha8 ║ Clear_Select ║ DosAllocMem failure ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 3 ║ Alpha8 ║ SearchDialog ║ DosAllocMem failure ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 4 ║ Alpha10 ║ DisAsmExe ║ DosAllocMem failure ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 5 ║ Alpha1 ║ MyWindowProc ║ WinDrawBitmp failure in WM_DRAWITEM ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 6 ║ Alpha2 ║ ChildProc ║ WM_PAINT - GpiCreateLogFont ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 7 ║ Alpha8 ║ Find_chr ║ GpiCreateLogFont ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 8 ║ Alpha8 ║ Find_chr ║ WinGetPS ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 9 ║ Alpha2 ║ ChildProc ║ WM_PAINT - GpiCreateLogColorTable ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 10 ║ Alpha7 ║ AllocModBlk ║ DosAllocMem failure ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 11 ║ ALPHA10 ║ ChildToHex ║ DosAllocMem failure ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 12 ║ Alpha11 ║ FormattedPrint ║ hpsPrinter invalid ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 13 ║ Alpha11 ║ FormattedPrint ║ GpiCreateLogColorTable ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 14 ║ ALPHA8 ║ Find_Pos ║ WinGetPS ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 15 ║ ALPHA8 ║ Find_Pos ║ GpiCreateLogFont ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 16 ║ ALPHA2 ║ Get_Include ║ DosAllocMem ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 17 ║ ALPHA2 ║ Profile ║ DosAllocMem ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 18 ║ ALPHA2 ║ Profile ║ DosRead ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 19 ║ ALPHA2 ║ Create_Child ║ DosAllocMem ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 20 ║ ALPHA7 ║ EditDialog ║ DosAllocMem ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 21 ║ ALPHA8 ║ Backup_child ║ DosAllocMem ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 22 ║ ALPHA8 ║ Insert_rec ║ DosAllocMem ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 23 ║ ALPHA8 ║ RecordMsg ║ DosAllocMem ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 24 ║ ALPHA9 ║ FindChild ║ DosAllocMem ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 25 ║ ALPHA12 ║ IndexFile ║ DosAllocMem ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 26 ║ ALPHA8 ║ MoveSelectArea ║ DosAllocMem ║ ╠═════════╬═════════╬════════════════╬══════════════════════════════════════╣ ║ 27 ║ ALPHA12 ║ Create_Child ║ DosSetFilePtr ║ ╚═════════╩═════════╩════════════════╩══════════════════════════════════════╝ Note: If OS2.INI is corrupt you can start Alpha with the single parameter /n which will bypass the reads on OS2.INI. The key values are under the Alpha application name. If individual entries are deleted then the default value will be used. Error messages may be written to "Alpha.err". ═══ ═══ The colours may take the values :- BLUE, DARKCYAN, BLACK, DARKBLUE, DARKPINK, DARKGRAY, DARKRED, DARKGREEN, BROWN, CYAN, RED, GREEN ,PINK, YELLOW, PALEGRAY, DEFAULT, WHITE, ORANGE, PURPLE, PALEGREEN, PALEBLUE, PALEYELLOW, PALERED, COLOUR1, .. COLOUR8. Only the first 16 colours will be available on VGA screens. The COLOUR1, ... COLOUR8 value may be set by the slider bars and will be remembered when the Set button is pressed. ═══ ═══ The Help file ALPHA.HLP must be installed in the HELP path, e.g. C:\OS2\HELP directory. ═══ ═══ If mouse button 1 is held down whilst the mouse is dragged to the bottom or top of the window the area will be shaded in the Select area colour. A complete line will be selected if the start position precedes the first character of a line and the end position precedes the start of the following line. The highlighted area may then be deleted, copied to the Clipboard etc.. If the mouse pointer is held at the bottom or top of the screen then the window will scroll until the mouse button is released or the pointer moved back within the window. ═══ ═══ The Structure dialog box will display the call structure for 370 and 386 assembler, PASCAL, PL/AS, C and FORTRAN programmes based on the Keywords from the profile. The Procedure entry names are displayed in the "Highlight" colour and and the calls in the "Text" colour. If an entry is selected from the Structure List Box then the last active window is scrolled to that line. The Print button may be used to print the contents of the List box on LPT1. The CpyClp button will copy the contents of the list box to the Clipboard. If the file contains Tab characters then Tab expansion should be active before the structure tables are built. ═══ ═══ The colours may take the values :- BLUE, DARKCYAN, BLACK, DARKBLUE, DARKPINK, DARKGRAY, DARKRED, DARKGREEN, BROWN, CYAN, RED, GREEN ,PINK, YELLOW, PALEGRAY, DEFAULT, WHITE. For XGA screens etc. the colours :- ORANGE, PURPLE, PALEGREEN, PALEBLUE, PALEYELLOW, PALERED, COLOUR1, ..., COLOUR8; may also be used. {The value of COLOURn may be set by adjusting the sliders on the Colour dialogue box.} ═══ ═══ If you wish to access files from the host then you should also install a programme such as ALMCOPY {from OS2TOOLS}. The programme name may be specified in the Profile. The data from the COMBO box is passed unmodified to the Transfer Programme, e.g. H:ALPHA SCRIPT A ALPHA.SCR Developers/designers in CICS and MQSeries can access the host files by using CRUISE ( NOMENU P000 etc.. ═══ ═══ The current line is the top line in the window unless button 1 has been pressed when the cursor will indicate the line. ═══ ═══  The Multi-Line Entry box may be used to modify the current line or add new lines. The number of lines added is the No. of lines in the MLE.  The Modify button will replace the current line with the contents of the MLE.  The Undo button will undo the changes to the MLE.  The Cancel button will leave the current line unchanged.  The number on the left shows the current cursor position in the MLE.  The number on the right shows the current pointer, mouse, position in the MLE. If major modifications, {The Multi-line Entry field will only accept approximately half the number of lines in the file at a time}, are to be made to the file then a purpose built editor should be used. If records larger than 256. are displayed they are split and rejoined when saved. ═══ ═══ If the file extension is an alias the names must be placed in parenthesis, e.g. "A37,ASM,PAS,CMD,(C,CPP),FOR," ═══ ═══ The command displayed in the Compile dialogue box will be scanned and 1. the % replaced by the full path name from the file Entry box. 2. the %e replaced by the file extension. 3. the %n replaced by the file name. 4. the %p replaced by the path name from the file entry box. The resultant command will be executed in the current directory when the Execute button is pressed. The Standard Output for the Child process will be written to the "Output" MLE. If a number within the Output MLE is selected and mouse button 1 released then the child window will scroll to that line. The programme name is formed by appending ".EXE" to the first name of the command line. If the command line is modified then it will be remembered when Alpha is closed. {Other programmes could be executed, e.g. GREP -y -l "%" *.C}. The Excuting message is displayed in the Static text colour and the Complete message in the Output text colour. ═══ ═══ ═══ ═══ The colour may be the text colour value or an expression, viz. :- (,,) The value UNDERLINE will select the underscore font. ═══ ═══ The Box form of the select area will cause the button 1 drag area to form a box shape. The paste function will overwrite the appropriate size box area starting with the cursor position as the top left of the box. ═══ ═══ If a file has been modified without saving when Alpha is closed or the child window is closed a dialog box will be created with the options of Continue or Cancel.  Continue will continue the operation of closing without saving.  Cancel will stop the current operation of closing so that the file may be saved. ═══ ═══ The Save dialogue box may be used to save a modified file.  Save - will write the last active child window to the file specified in the entry box. This may be modified to change the path etc.  Cancel - will discard the dialogue box without saving.  Select Hexadecimal convert to save the file and translate columns 8-42 inclusive from hexadecimal characters. This allows the back translation of the Ctr+z file conversion after modification. Invalid hexadecimal characters are ignored, so some degree of free format is possible.  Select the Composite check box to cause a blank, '1' or '2' character to precede each line to indicate which lines of a composite file are common, belong solely to file 1 or to file 2. This will enable delta files to be created. The file is written to a temporary file $$$Alpha.tmp which is then renamed. If it is not possible to write out the file the original file should still be intact. ═══ ═══ This dialogue box will allow the search of the current directory for the specified string.  The Search argument Entry box specifies the search string, the default is the highlight string.  The Search directory Entry box specifies the current directory to be searched. This may be altered to set a new current directory.  The File type Entry box specifies the file extension, the default is the first extension for the language of the last active window or 'C'. The files searched are of the type '*.file_extension' in the current directory, e.g. *.C*.  If the Subdirectories check box is checked then any directories below the current one will also be searched.  If the Case sensitive check box is checked then the string search will be case sensitive.  The List box displays the found lines. If one is selected and the Go to button pressed then a child window will be created for the file from the current directory.  The Locate button will search the current directory for the Argument string and fill the List box.  The CpyClp button will copy the contents of the list box to the Clipboard.  The Cancel button will dismiss the dialogue box. The Allocate dialogue box may also be used to change the current directory. The Complete message is displayed in the Output text colour. ═══ ═══ This dialogue box will allow the search of the last active child's records or the records of all the children for the specified string.  The Argument Entry box specifies the search strings, the default argument is the 'or' of the highlight strings. The argument may contain several strings separated by a blank, 'к' or '&'; where a blank implies 'or', 'к' implies not this string and '&' is the logical and, e.g. SUBRTINE_1 & к call. Note the spaces between operators and argument strings !  The Include records Check box indicates whether the argument string is used to include or exclude records.  The Case sensitive Check box specifies whether the search should be case sensitive or not.  The Keyword Check box specifies whether the string should be terminated by a non-alphanumeric character.  The Search all children Check box causes all the data of the children to be searched.  The List box displays the found lines. If one is selected and the Go to button pressed then the child window will be scrolled to that line.  The Locate button will search the last active child records for the Argument string and fill the List box.  The CpyClp button will copy the contents of the list box to the Clipboard.  The Cancel button will dismiss the Dialogue box. ═══ ═══ This dialogue box will allow one of the 256 characters from the current font to be inserted at the current cursor position. Select one character by pressing mouse button 1 on the required character of the array. Use the System menu to dismiss the dialogue box. This may be used to draw diagrams etc. ╔══╦══╗ ╠╦═╬══╣ ╠╬═╬══╣ ╚╩═╩══╝ ═══ ═══ This dialogue box will display up to five instructions at the current cursor position from the record. ═══ ═══ The Ctrl+d keys on a child window for a 32-bit 'EXE' or 'DLL' file containing the MZ and LX header {OS/2 2.x} structures will cause the code object to be dis-assembled and the output placed in a new child window. ═══ ═══ If the Grid option is selected then the bookmark number will be displayed in the record indent area in the Locate colour. The +Ctrl and +Ctrl keys can be used to scroll to the next bookmark in the file. Pressing mouse button 1 on the bookmark number will scroll the file to that bookmark. Mouse button 2 may be used to display the text or line number associated with the bookmark. ═══ ═══ The file name may be a search pattern e.g. Test*.c and the search will be in the current directory. On the command line up to 16 file names may be specified. ═══ ═══ The Status bar will display the record number of the record at the top of the active window, the last cursor position and the bookmark numbers which are in use. ╔═══════════════╦═════════════════╦═════════════════╗ ║ Record No. ║ Cursor Position ║ Bookmark No. ║ ╚═══════════════╩═════════════════╩═════════════════╝ The Bookmark numbers may be selected with mouse button 1 to cause the child window to scroll. If mouse button 2 is pressed a help balloon will display the bookmark identification text. If the current child window is a Composite then the Status bar will include an indicator of the composite file differences. The indicator may be used to scroll the child window by using mouse button 1. ═══ ═══ The last active child window is compared with the one selected from the List box. A composite file is created and the unique lines from the first file are displayed with the File one colour and the unique lines from the second file are displayed with the File two colour. The +Ctrl and +Ctrl keys can be used to scroll to the next different section in the file. The Status bar will include an indicator of the composite differences. The indicator may be moved by dragging the mouse with button 1 pressed to cause the child window to scroll. ═══ ═══ ═══ ═══ A search from the top of the file is made for the highlighted label definition or procedure entry and a secondary window is opened. {The language structure tables are searched first so if you have specified some structure keywords via. Operator then you will have to record the structure first, Ctrl+s.} ═══ ═══ A specific column may be set for each child window. The line colour will be the grid background colour. The column may be removed by setting the pointer before column one when pressing Ctrl+ mouse button 1. ═══ ═══ The Calculator dialogue box is a simple hexadecimal/decimal calculator. Key Description Acc The accumulator - answer. Mem The memory value. Ent The current entry value. CA Clear accumulator. CE Clear entry field. CM Clear memory. MR Recall memory value to entry field. Min Copy entry value to memory. = Copy entry value to accumulator. - Subtract entry value from accumulator. + Add entry value to accumulator. * Multiply accumulator by entry value. / Divide accumulator be entry value.