Microsoft, Windows, Windows Server, Windows Server 2000, Windows Server 2003, Windows Vista, Windows XP, Windows 7 and Microsoft SQL Server are registered trademarks of Microsoft Corporation. All other products may be trademarks or registered trademarks of their respective companies.
Also, if /w is set, --- RETURN CODE will be set to the exit status of the program executed. (#3220)
There is now an option in "Database Management" so that the following screen reporting data file errors can be remedied more conveniently.
There remains a bug which will sometimes prevent the "Database Management" feature from running properly. If this occurs, running "Database Management" in the regular manner and selecting the file, should permit the necessary operation to run. (#4743)
Previously the receiving process would act on the Direct Process 1 signal only after the user would next hit a key. This has been changed. It will now act on the signal whenever APPX is awaiting keyboard input without requiring the user to hit a key. (#4017)
Error Opening Terminal: vt220
Fixed in 4.0. Under 3.5, you can set up a symbolic link from /usr/lib/terminfo -> /usr/share/terminfo by performing the following as root:
cd /usr/lib; ln -s /usr/share/terminfo terminfo (#4585)
Microsoft, Windows, Windows Server, Windows 2000, Windows Server 2000, Windows Server 2003, Windows 98, Windows NT 4, Internet Explorer, Windows Vista, Windows XP, Windows 7, Microsoft SQL Server, Microsoft Access and Microsoft Excel are registered trademarks of Microsoft Corporation. All other products may be trademarks or registered trademarks of their respective companies.
Microsoft, Windows, Windows Server, Windows 2000, Windows Server 2000, Windows Server 2003, Windows 98, Windows NT 4, Internet Explorer, Windows Vista, Windows XP, Windows 7, Microsoft SQL Server, Microsoft Access and Microsoft Excel are registered trademarks of Microsoft Corporation. All other products may be trademarks or registered trademarks of their respective companies.
(#1796)
Several option keys (such as SELECT) would cause strange behavior if pressed while help text was being displayed. This has been corrected. (#4125)
The DISPOSITION process has been redesigned for release 4.0. Some of the changes are: (#4347)
(#4397)
(#4471)
Also, CNV TEXT will now operate on an entire record. This can also be done bi-directionally. (#4474)
One possible use of this feature would be to create a Hook record which would invoke a customized disposition process instead of the process --- DISPOSITION. Thus the customized process could be invoked without requiring changes to all the jobs where --- DISPOSITION is specified. (#4487)
In the first 4.0 beta, scanning for a process name from within the ILF editor would bring up a popup scan screen, but the underlying ILF editor screen could still have active modifiable fields. This has been corrected for the second beta. (#4559)
Enhance the Java GUI interface to provide support for Checkboxes, Frames, Icon Buttons, Client/Server file transfer and client side command execution. This has all been introduced with release 4.0. See the readme file that comes with the Java Client for more details. (#4586)
Our import buffer was not being cleared, allowing prior records to overlay subsequent records. This buffer is now being cleared between logical records. (#3000)
The "Default Value" field has been added to the Additional Attributes popup for Text fields. (#3091)
(#4488)
The Orphan Detection utilities for Domains and for Fields will detect and fix these invalid initial values. Error messages will be generated on the printed listing. This will then require the Data Dictionary to be processed to complete the repair. (#4493)
(#4495)
For some time APPX has allowed the specification of a negative number as the "Row Position" of a Frame. If the row position was negative, APPX would base the placement of the frame on it's size and the number of rows on the terminal. The actual negative number itself was not respected, it simply indicated that the frame would be positioned based on the frame size.
This has been slightly changed in release 4.0. The negative Row Position will now itself indicate the starting position for the frame on the screen, relative to the last row available. Thus the last row is zero, the next to the last row is -1, etc.
A report has been added to the Source Analysis Menu to assist in finding any frames affected by this change.
See ECR #3298 for more information on designing scrolling input processes that can be utilized with different numbers of rows available on the terminal. (#4506)
The ILF statements, COLOR and PICTURE, were not being handled correctly by the Change All References and by the Cross Reference utilities. (#4645)
Converting a 1.8.x app directly to 3.3, 3.4, or 3.5 would result in problems with local domains. However, an intermediate conversion to 3.2.x, then to a later version would work fine. This problem has been corrected in the 4.0 market release. (#4648)
Also, since creating a dynamic key on a large file can take considerable time, a warning will be displayed if one is being created once 1,000 records have been processed. At this point, the user can continue or cancel the creation of the dynamic key. The number of records at which the warning will be displayed can be overridden by setting the environment variable APPX DYNAKEY PROMPT=xxx (where xxx is a number of records). Note that the warning is only displayed once per creation of the key. In other words, it's not every 1,000 records, but once at the thousandth record. If the user elects to continue, no further warnings will be given. (#4202)
| Cursor Positioned On | Jumps to the Corresponding |
| GOTO, GOSUB (without App Id) | LABEL |
| BEG LOOP, BEG READ | END LOOP, END READ |
| END LOOP, END READ | BEG LOOP, BEG READ |
| SUBR, COPY, GOSUB (with App Id) | Subroutine Process |
| Process Stmts (INPUT, OUTPUT, JOB, etc.) | Process |
| Field Name | Field Definition |
| File Name | File Definition |
| Any Other Statement | Specified Event Point |
Jumping within an event point works like a stack, pressing PREVIOUS IMAGE will take you back to where you came from. If you jump into another process, recursive ILF editing is supported. (#4626)
There is a new option on the "Appearance" menu, "Automatic Tab Out". If this is not checked then after filling up a field the cursor will not automatically tab to the next editable field. After the field is completely filled, it will tab with the next keystroke. Note that this is the new default behavior.
If this is checked, the old behavior is retained.
AutoTabOut is remembered in the appx.ini file for each user. (#4642)
See also Java Client 4.0 Release Notes.
Microsoft, Windows, Windows Server, Windows 2000, Windows Server 2000, Windows Server 2003, Windows 98, Windows NT 4, Internet Explorer, Windows Vista, Windows XP, Windows 7, Microsoft SQL Server, Microsoft Access and Microsoft Excel are registered trademarks of Microsoft Corporation. All other products may be trademarks or registered trademarks of their respective companies.
There are many new features in this release that you can use to make your applications much more graphical. There are also a few performance enhancements to reduce the amount of work the client must perform to process your application specifications.
Now for what you have been waiting for. The list of new features:
This Java client was written to use the Sun Java 1.2 standard. This is a much more stable Java version and is supposed to have better performance. Also, some effort has been made to minimize some of the screen painting we are doing. There is an option to compile our Java client directly down to native Win32 EXE code, but the compiler has not been released for the Java 1.2 standard yet. We have tried it with the older Java 1.1 code we had and it made a noticeable improvement. As soon as this compiler is available for the Java 1.2 environment, we will compile it and make it available.
More of the basic edit keys are now implemented for Insert/Delete/Copy/ Paste, etc. Also, the copy/paste keys CTRL+C and CTRL+V use the Windows® clipboard.
Multiline fields like Text fields are now painted as one field region instead of a bunch of one-line fields. Also, logic edit fields are painted as tri-state logic fields. The three states are:
Blank Checkbox = Default value
Green Checkmark = Yes
Red X-Mark in Box = No
If NULL OK? on the field is N, then clicking on the field will cycle past blank and only cycle to a Yes or No indicator. You can still use the keyboard just like before: you can press SPACEBAR to blank it out, ‘Y’ to set it to true or ‘N’ to set it to false. The Y and N are driven by the language currently selected on the server. So, if you are using another language that does not use Y/N, it will work with whatever letters are mapped to a Yes and No state by that server language file. Any time the server changes languages, the new indicators are automatically loaded into the client.
Now, from ILF code on the server, you can push files to the client, pull files from the client, and run a command line on the client.
You can send a file to the client with a CALL command. If the destination filename is left blank, the client will open a dialog file browser so the use can place and name the file themselves. The value they select will be returned to the server and placed in the destination field. If the destination path is relative, it will be relative to the location of the Java Client JAR file location. While the file is in transit, the client will show a progress slider and the APPX session will wait until the file transfer completes before returning fron the CALL statement. The T/F indicator will tell you if the transfer completed OK or not.
SET 1EX WORK SOURCE = C:REGO.TXT SET 1EX WORK DESTINATION = REGO99.TXT PASS 1EX WORK SOURCE FIELD SHARE? Y PASS 1EX WORK DESTINATION FIELD SHARE? Y CALL ,RT_SEND_FILE RESIDENT? Y END? N FAIL 0
You can pull a file from the client with a CALL command. If the source filename is left blank, the client will open a dialog file browser so the user can pick the file themselves. The value they select will be returned to the server and placed in the source field. If the source path is relative, it will be relative to the location of the Java Client JAR file location. While the file is in transit, the client will show a progress slider and the APPX session will wait until the file transfer completes before returning from the CALL statement. The T/F indicator will tell you if the transfer completed OK or not.
SET 1EX WORK SOURCE = SET 1EX WORK DESTINATION = /tmp/upload.txt PASS 1EX WORK SOURCE FIELD SHARE? Y PASS 1EX WORK DESTINATION FIELD SHARE? Y CALL ,RT_RECV_FILE RESIDENT? Y END? N FAIL 0
Using a version of the RT_LOAD_URL call, you can run a complete command line on the client machine. This is done by starting the command with the ‘@’ symbol. This means run the command as is, at the client. This examples will take the results from the previous SEND and run Notepad against it on the client.
SET --- TEMP 80 = @NOTEPAD.EXE APPEND --- TEMP 80 1 1EX WORK DESTINATION SET --- LI = 80 PASS --- TEMP 80 FIELD SHARE? Y PASS --- LI FIELD SHARE? Y CALL ,RT_LOAD_URL RESIDENT? Y END? N FAIL 0
This example will download a print file and a print config file to a client and run winprint on the client to print the file. This assumes that the client already has a copy of winprint.exe in the same location as the JAR file or in the active PATH.
SET 1EX WORK SOURCE = /tmp/PRT0001 SET 1EX WORK DESTINATION = PRT0001 PASS 1EX WORK SOURCE FIELD SHARE? Y PASS 1EX WORK DESTINATION FIELD SHARE? Y CALL ,RT_SEND_FILE RESIDENT? Y END? N FAIL 0 * SET 1EX WORK SOURCE = /tmp/PRT0001.cfg SET 1EX WORK DESTINATION = PRT0001.cfg PASS 1EX WORK SOURCE FIELD SHARE? Y PASS 1EX WORK DESTINATION FIELD SHARE? Y CALL ,RT_SEND_FILE RESIDENT? Y END? N FAIL 0 * SET --- TEMP 132 = @WINPRINT.EXE APPEND --- TEMP 132 1 -config=PRT0001.cfg APPEND --- TEMP 132 1 PRT0001 SET --- LI = 132 PASS --- TEMP 132 FIELD SHARE? Y PASS --- LI FIELD SHARE? Y CALL ,RT_LOAD_URL RESIDENT? Y END? N FAIL 0
When painting an image in the image editor, you have some new tools to help you along. There are Data Palettes you can use to browser files and fields, and to drag fields onto you image editor session. You can double-click on a field to open its attributes page. You can right-click on a field to get a helper menu to perform tasks like Move, Edit, and Delete. You can now draw boxes and lines similar to how you already paint inverse, underline, and bright. You can use the PICTURE ilf command to define free-sizing pictures on the screen as well as IconButtons that execute APPX Options. Let’s look at these one at a time.
While in the Image Editor, the pulldown menu option for Data Palette is available. When you select this menu option, APPX will open up a tree control in a floating window that you can use the browse Application/File/Field/WorkField names. You can drop fields from this list and drop them on the image editor session. APPX will automatically add these fields to the image. You can then edit the fields to override the default attribute settings. You can open more than one data palette concurrently.
Note: The Icons used to show the different file and data types are just snagged from the windows icons. If anyone has any good ideas for icons, please feel free to contribute.
There are some new mouse controls in the Image editor.
If you double-click on a field in the editor image, APPX will select the field with the cursor and open the attributes overlay for the field.
If you right-click on a field in the image editor, you will get a popup helper menu from which you can select Move, Delete, or Edit.
Like using Option13 to paint special attributes on the image, you can use option14 to paint box/line attributes. The boxes will also show on a character terminal as a single line border. If a box is defined as one row or one column in size, it will paint as a line. When using the Java client, there are several types of styles you can select: Plain Line, Bevel, and Etched. The Plain Line can be thin or fat. The Bevel can be set to Raised or Lowered to make the area inside the box appear higher or lower than the surrounding area. The Etch can bed set to Raised or Lowered to make the etched line look like it is carved into the background or embossed and bulging our from the background.
If you type some text in the area that will form the top line of the box before defining the box, the text will be picked up as the box label and will be incorporated in the top edge of the box.
Note: This is one place that you might get some errors in the Image Editor while trying to define some boxes. Please report what you get so we can make sure we get and many issued fixed here as we can.
If you define a field on an image and make it a picture, the data placed in the field to define the source of the picture does not have to be completely visible on the window. We are no longer screen-scraping the picture pathname. It is now being pulled from the server memory. So, you can paint a real small field with a real long pathname. If you paint a field as small as 1 character cell in size, the Java Client will use that cell as the anchor for the upper/left corner of the picture an will let the picture determine it’s own size based the its content. A picture painted as two or more character cells in size will resize and reshape the picture to fit the defined screen area.
Note: At some point, there will be an option to have the picture resize to fit, but keep the same X to Y aspect ratio. Currently the image can get squashed if the screen size needed does not match the aspect ratio of the image.
As an initial method of defining IconButtons on your images, we have enhanced the parser for PICTUREs so that if the contents of the PICTURE field contains special keywords, instead of painting a picture, APPX will create an IconButton. You can use the keywords to set the attributes of the IconButton. Currently, there are 24 attributes you can set. This is done by appending all the keywords and data together into the PICTURE field. Buttons painted one cell tall and wide will autosize themselves based on their contents. Buttons painted bigger than one cell will force the button to fit the screen area.
setActionCommand() - This is set to the numeric value of the APPX option key that should be sent when the button is clicked.
The following will send an APPX option 33 when the button is pressed:
@SAC=33
setToolTipText() - This is set to a text value that will show up as the tooltip for the button.
The following will set the tool tip text for a button:
@STTT=This button will run a report
setBackgroundColor() - This will set the background color of the button a one of 15 predefined colors. The color index is:
The following will set the button background color to Red:
@SBC=6
setForegroundColor() - This will set the foreground color for the text of the button to the selected color. The same color index number apply here as defined for the @SBC keyword.
The following will set the button foreground color to Yellow:
@SFC=7
setFont() - This will set the font used on the button. You can select a valid Java font face, Style, and Size. Case matters.
Valid Faces: Dialog, SanSerif, Serif, Monospaced, Helvetica, TimesRoman, Courier, DialogInput, ZapfDingbats.
Valid Styles: BOLD, ITALIC, PLAIN
The following will set the button font to Helvetica, BOLD, 18 point:
@SF=Helvetica,BOLD,18
setIcon() - This will set the normal icon for the button. THis can be a URL or actual pathname. This must be from the perspective of the machine running the Java Client.
The following will set the default Icon for the button to a Smiley loaded from a mapped server drive:
@SI=X:iconssmiley.gif
setRolloverEnabled() - This option will turn on/off Rollover Icon triggers. This usually does not need to be set since setting the RolloverIcon automatically turns on this option.
This will turn on Rollover processing:
@SRE=T
setRolloverIcon() - This will set the icon image shown when the mouse pointer rolls over the button. This also sets the @SRE=T automatically.
This will set the rollover icon for the button to a happy smiley loaded from a web server machine:
@SRI=http://server/icons/happySmiley.jpg
setDisabledIcon() - This will set the Disabled Icon image for the button. This image is shown when the button is disabled.
This will set the disabled icon to a stop sign from a location relative to where the client ran from:
@SDI=icons/stopSign.gif
setRolloverSelectedIcon() - This will set the Icon shown when the mouse rolls over the button and the button also has the selected focus.
This will set the button icon to a perspiring smiley when the button has the selected focus and the mouse rolls over it:
@SRSI=icons/smileyNerves.jpg
setPressedIcon() - This will set the icon shown when the button is pressed.
This will set the pressed icon to a screaming smiley:
@SPI=icons/screamingSmiley.jpg
setSelectedIcon() - This will set the icon shown when the button is selected with the active focus.
This will set the selected icon image to a smiley with sun glasses:
@SSI=icons/coolSmiley.gif
setText() - This will set the text label of the button.
This will set the button text to “Press Me”:
@ST=Press Me
setSelected() - This will select or deselect the button focus when the button is shown on the window.
This will se the active focus in this button when it is painted:
@SS=T
setBorderPainted() - This will turn on or off painting of the button border. This can be used with the option to make the background transparent if you want to use the icons as the only indication that there is a button. This can be used to make you button act like an icon on a web page that shows only the icon, and different icons as the mouse rolls over them.
This will turn off painting of the border around our button area:
@SBP=F
setFocusPainted() - This will turn on or off painting of the hasFocus indicator for the button.
This will turn off the focus indicator on this button:
@SFP=F
setEnabled() - This will determine if the button is enabled to be clicked.
This will disable the button so it can not be clicked.
@SE=F
setContentAreaFilled() - This will turn on or off filling of the button background area. If this is turned off, then the button background will be transparent. Use this along with setBorderPainted() to make buttons that have not background or border.
This will make the button have a transparent background:
@SCAF=F
setHorizontalAlignment() - This will set the overall alignment of the contents of the button within the button area. The contents include the icon and the text.
This will force the contents of the button to be left justified:
@SHA=LEFT
setVerticalAlignment() - This will set the overall alignment of the contents of the button within the button area. The contents include the icon and the text.
This will force the contents of the button to the top of the button:
@SVA=TOP
setHorizontalTextPosition() - This will set the position of the text in relation to the icon.
This will set the text so that it shows to the right of the icon:
@SHTP=RIGHT
setVerticalTextPosition() - This will set the position of the text in relation to the icon.
This will set the text so that it shows below the icon:
@SVTP=BOTTOM
setMargins() - This will set the extra margin space between the contents of the button and the border of the button. You can specify one, two, three, or four arguments. This is in pixels. Any unset arguments default to the values of the arguments that are given.
This will set the top margin to 10 pixel, The other three margins also default to the same 10 pixels:
@SM=10
This will set the top margin to 10 and the left margin to 20. The bottom margin will default to the same value as the top margin. The right margin will default to the same value as the left margin:
@SM=10,20
This will set the top margin to 10, the left margin to 20, and the bottom margin to 30. The right margin will default to the same value as the left margin:
@SM=10,20,30
This will set all four margins:
@SM=10,20,30,40
setMNemonic() - This will set the accelerator letter on the button.
This will set the Accelerator letter on this Edit button to ‘E’:
@SMN=E
Both of these buttons will send an Option12 when pressed:
Create a new button that has text that is painted with red letters:
@SAC=12@ST=Press Me@SFC=6
Create a button with an Icon, rollover Icon, and no border or background:
@SAC=12@SI=icons/normal.gif@SRI=icons/rollover.gif@SBP=F@SCAF=F
Advice: start simple and build. Most of the defaults may be what you would want anyway. Only set attributes to change away from the defaults. Setting an attribute that would have defaulted correctly anyway, just increases the amount of data sent to the client.
Microsoft, Windows, Windows Server, Windows 2000, Windows Server 2000, Windows Server 2003, Windows 98, Windows NT 4, Internet Explorer, Windows Vista, Windows XP, Windows 7, Microsoft SQL Server, Microsoft Access and Microsoft Excel are registered trademarks of Microsoft Corporation. All other products may be trademarks or registered trademarks of their respective companies.