Interactive COBOL ICSP2/ICQPRW Readme 5.27 24-Feb-2017 (Quick rev note: SP2 5.2.109(32).106(64), QPR 5.2.106, TC 5.2.52) This readme file pertains to the SP2 Panel editor (ICSP2), for designing and developing a GUI interface, the FormPrint editor (ICQPRW), for designing and developing GUI printer forms, and the SP2 and QPR runtime modules for the runtime and thin client. Portions of which are provided by Flexus. Environment entry notes: For ICSP2, if the environment entries SP2DIR and SP2CFG are NOT set, then SP2DIR is set to the current directory and "%ICROOT%"/sp2. For ICQPRW, if the environment entries QPRDIR and QPRCFG are NOT set, then QPRDIR is set to the current directory and "%ICROOT%"/qpr. Both the above executables require files in the associated sp2 or qpr directories so if SP2DIR or QPRDIR are set by the user they must include the above indicated directories. For the SP2 runtime, if the environment entries SP2DIR and SP2CFG are NOT set, then SP2DIR is set to the current directory, "%ICCODEPATH%", and "%ICROOT%". For the QPR runtime, if the environment entries QPRDIR and QPRCFG are NOT set, then QPRDIR is set to the current directory, "%ICCODEPATH%", and "%ICROOT%". Syntax notes: sp2check -------- sp2check [-l] [-m] [panel-file [new-panel-file [panel-to-move [new-panel-name]]]] Where -l creates log called checked.log (added in 4.10) -m deletes unused menus (added in 4.10) panel-file is the file to be checked/compressed. If not specifed, a prompt will be displayed. new-panel-file is a copy of the panel-file checked and compressed, defaults to checked.pan. panel-to-move is the name of a single panel to be moved from panel-file to new-panel-file, otherwise all panels are moved. new-panel-name is the renamed name of that particular panel in the new-panel-file qprcheck matches above for a form-file sp2print -------- sp2print [panel-file [panel]] Where panel-file is the name of a panel file to open and print. If not specified, a prompt will be displayed. panel is the name of the panel to print. If not specified, all panels are printed. sp2gen ------ sp2gen [panel-file [, panel [, template]]] Where panel-file is the name of a panel file to open. If not specified, sp2gen will work in interactive mode. In interactive mode, it must be able to find sp2.pan via SP2DIR. panel is the name of the panel for which to generate the copy file. If not specified, copy files for all panels are generated. template is the template to use. If not specified, sp2.cbx is used. Changes and New Features in 5.27 -------------------------------- 1. Added SP2 example files, bitmap3.cbl, .cpy, .pan. Changes and New Features in 5.24-5.26 ------------------------------------- None. Changes and New Features in 5.23 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 5.2.109 (.101 for 64-bit) editor: 5.2.106 5.2.109 ------- Adjustment to SP2OBO logic Handle numeric keypad period in system field as comma if SP2DEC=1 5.2.107 ------- Stop extra window scrolling during cursor postioning if window sbar-sw = r Do whole window repaint at end of scrolling if scaling active (see 5.2.101) Problem with clear-window in text mode SP2OBO=1 causes borders to be adjusted to attempt to allow for scaling Changes and New Features in 5.22 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 5.2.106 (.101 for 64-bit) editor: 5.2.106 5.2.106 ------- Problem with erase-window call if hide-sw=y set 5.2.105 ------- Zero values in signed fields should be returned with sign byte set Problem with SP2NCS=1 causes window to scroll after scrolling repeat group 5.2.104 ------- Problems with justify=j Specify Range values to set spin button range (also set Value to specify initial value with range) 5.2.103 ------- Justify = j for statics 5.2.102 ------- Justify = j means justify left and right, Special text = y must also be set 5.2.101 ------- Allow menu option name to be maintained in editor Suppress whole window repaint when scrolling window and scaling active Reset program length in editor if push button has fields area entry 5.2.100 ------- Set SP2EDT=256 to trap double-click in a system entry field Correct handling of types and colors using display-field rather than Types and Colors areas Correct handling of repeat group vertical occurs when Types area not used 2. ICQPRW has been upgraded to use: QPR version: runtime: 5.2.106 (64 bit is 5.2.107) editor: 5.2.106 5.2.106 ------- Problem with maint mode erase-window call 5.2.105 ------- Sign zero values for signed fields to allow for compiler strict checking 5.2.104 ------- Problems with Justify=j Please note that some fonts (eg. Calibri) seem to be incompatible with Justify=j processing Problem with printing jpg's sized to image 5.2.103 ------- Justify = j for statics 5.2.102 ------- Justify = j means justify left and right, Special text = y must also be set 5.2.97 ------ JPG scaling issue Changes and New Features in 5.21 -------------------------------- None. Changes and New Features in 5.20 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 5.2.99 (.99 for 64-bit) editor: 5.2.91 5.2.99 ------ Generator problem if subwindow field points to non-existent panel Set fd-prog-spec X"40" bit on display-field call to select item in listbox using zero-based index held in fd-prog-off Problem with Special format=a icon fields linked to jpg's 5.2.98 ------ Problem with tab windows containing unprotected subwindow fields 5.2.97 ------ Allow display-field to change type/color without effecting data if fd-initial-len = 0 Special format=f can cause jpg's to be scaled twice Return correct last-fld-id, etc. after switch within container then return on select 5.2.96 ------ Problems with editor select all 5.2.95 ------ Allow for Special format=f in 5.2.93 jpg sizing logic 5.2.94 ------ Problem with SP2EDT=128 5.2.93 ------ Button jpgs not being scaled correctly SP2EDT=128 means no insertion allowed if field is full Problem with get-field-data function if Program data X"02" flag set ActiveX protection (field More options X"40") means treat display-only and protected types as for regular fields 5.2.92 ------ Adjust shifting for custom fields with more characters that fit in visible area Avoid resetting focus for third party controls if child of parent control already has focus Keep panels in sequence within window Changes and New Features in 5.12 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 5.2.91 (.91 for 64-bit) editor: 5.2.91 5.2.91 ------ Problem with sp2-pr-var-act=L introduced in 5.2.88 5.2.90 ------ Support UTF-8 in buttons, listboxes and comboboxes Allow regular environment variables to be retrieved with get-configuration 2. ICQPRW has been upgraded to use: QPR version: runtime: 5.2.91 (64 bit is 5.2.84) editor: 5.2.91 5.2.91 ------ Problem with set-property function Changes and New Features in 5.11 -------------------------------- None. Changes and New Features in 5.10 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 5.2.88 (.84 for 64-bit) editor: 5.2.88 5.2.88 ------ sp2-pr-var-act = D allows deletion of data of length=pr-len from a var-data section at offset=pr-offset Problem in code generator with panels with more than 500 fields Allow environment variables (%...%) to be embedded in SP2DIR as long they equate to single directories 5.2.87 ------ sp2-pr-var-act = I allows insertion of data of length=pr-len into a var-data section at offset=pr-offset 5.2.86 ------ Editor supports up to 500 fields in a group New code generator template language (beta) ------------------------------------------- The code generator now supports more user-friendly cobol-like tokens alongside the old numeric ones. Use the command line "sp2cbxcv old-cbx-file" to convert an existing cbx file into the new format - the new file will be called sp2cbxcv.out and can be renamed appropriately, for example: sp2cbxcv sp2.cbx ren sp2.cbx sp2cbx.bak ren sp2cbxcv.out sp2.cbx Here are the new tokens with their numeric equivalents: $000 - $new-file name $001 - $panel-name $002 - $panel-prog-len $003 - $panel-prog-cnt $007 - $perform for fields with prog-len $008 - $end-perform $009 - $field-name $010 - $field-fmt $011 - $if repeat $012 - $else $013 - $repeat-vert-occ $014 - $perform for fields in repeat $015 - $end-if $016 - $end-perform $017 - $field-id $018 - $perform for fields with prog-num $019 - $perform for base fields $021 - $if first-time $022 - $file-name $024 - $field-filler $026Lx(y) - $field-len (x+1:y) --new token uses position rather than offset to be consistent with cobol reference modification $026Nx(y) - $field-num (x+1:y) $026Cx(y) - $field-char (x+1:y) $026VAx(y) - $field-var-A (x+1:y) $026VBx(y) - $field-var-B (x+1:y) $027x=(y) - $if x = y --put y in quotes if it contains embedded spaces $027x!=(y) - $if x != y --not = $027x>(y) - $if x > y $027x<(y) - $if x < y $027x>=(y) - $if x >= y $027x<=(y) - $if x <= y $028 - $end-if $029 - $new-file-ask $030 - $group-len, etc. $031 - $else $032 - $panel-len, etc. $033 - $perform for statics $034 - $static-len, etc. $036 - $dollar $040-$049 - $var-0 thru $var-9 $050x=(y) - $set $var-x = y --put y in quotes if it contains embedded spaces $050x+(y) - $set $var-x + y $050x-(y) - $set $var-x - y $050x*(y) - $set $var-x * y $050x/(y) - $set $var-x / y $050x%(y) - $set $var-x % y --remainder from dividing x by y $050x#(y) = $set $var-x # y --convert to numeric (eg #(A) is 65) $050x&(y) = $set $var-x & y --and $050x@(y) = $set $var-x @ y --character within x specified by index y beginning at 0 $051 - $perform until exit $052 - $exit perform $053 - $end-perform $054 - $menu-len, etc. $056 - $perform for fields with tab $057 - $perform for groups $060 - $toolbar $061 - $end-toolbar $070-$079 - $var-10 thru $var-19 $087 - $decimal $091 - $perform for fields and statics $098 - $group-name $100 - $no-sp-lv $106 - $perform for repeats $107 - $repeat-len, etc. $111 - $perform for panel and subpanels $113 - $or $117 - $perform for fields $120-$139 - $var-20 thru $var-39 $143 - $quote 2. ICQPRW has been upgraded to use: QPR version: runtime: 5.2.88 (64 bit is 5.2.84) editor: 5.2.88 5.2.88 ------ Exit preview if temp file cannot be created - customize message using id 915 in the QPRPVT file Allow environment variables (%...%) to be embedded in QPRDIR as long they equate to single directories 5.2.86 ------ Allow QPRFON and QPRSTR config variables to be changed Correct references to SP2 functions in qprmaint.cpy 5.2.85 ------ Stop truncation of printer names and return network printer names properly 914Page: entry in QPRPVT file allows Page: text to be configured (max 6 characters including colon or other separator) Changes and New Features in 5.09 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 5.2.83 (.84 for 64-bit) editor: 5.2.84 5.2.83 ------ Problem with poff/pdup Group flat border not being deleted 5.2.82 ------ Show panel description alongside name in editor treeview Repeat group values SP2OCH - adjusts scaling in a similar way to SP2OCW so that vertical position is consistent during scaling - set SP2OCH to the cell height that you are using Set sp2-ms-line-cnt = -1 to make a beep rather than display a message box sp2.cpy updated for compatibility with converter 5.2.81 ------ Same poff for dup flds in repeats 5.2.80 ------ Set "Same poff for dup flds" (pd-options-6 = X"04") to specify that fields duplicated across panels within a container should share the same Fields area item Set "Same pnum for dup flds" (pd-options-6 = X"08") to specify that fields duplicated across panels within a container should share the same Colors/Types area items SP2END=2 means allow end and home to be used as control keys 5.2.79 ------ Allow for multiple container levels when issuing editor warning about container generation Set "All keys control keys" (pd-options-6 = X"10") to specify that any key returns control (apart from input to system fields) Repeat group name (rd-name) 2. ICQPRW has been upgraded to use: QPR version: runtime: 5.2.84 editor: 5.2.84 5.2.84 ------ Problem with input into range window 5.2.83 ------ Group flat border not being deleted 5.2.82 ------ Show form description alongside name in editor treeview 5.2.81 ------ Problem with clicking on ruler in editor 5.2.77 ------ Look for remote printers as well as network ones Changes and New Features in 5.07 - 5.08 --------------------------------------- None. Changes and New Features in 5.06 -------------------------------- 1. sp2logon compiled with -R 7 as it has USAGE POINTER. 2. ICSP2 has been upgraded to use: SP2 version: runtime: 5.2.78 editor: 5.2.73 5.2.78 ------ Enhanced WC/X flag (not supported) 5.2.77 ------ Exclude hidden windows from bring to foreground logic 5.2.76 ------ Try to ensure window is top level when bring to foreground 5.2.75 ------ Problem tabbing into subwindow field with no tab fields in subpanel Themed border for windowed icon focus if border=d and SP2VST=1 5.2.74 ------ Problem with get-field-def by name 5.2.68 ------ Problem with classes 5.2.67 ------ Set SP2NCS=1 to prevent cursor relocation during vertical scrolling Avoid half hidden fields during vertical scrolling if SP2VTS set 5.2.66 ------ Get rid of pointers in RM version of sp2.cpy 5.2.64 ------ SP2OWN=8 means bring window to foreground when made visible 5.2.62 ------ SP2OWN=4 means bring all new windows to foreground 5.2.61 ------ Problem with tab sizing 5.2.60 ------ Still problems with self-drawn buttons 5.2.58 ------ Problems with new self-drawn colored radio buttons and check boxes 3. ICQPRW has been upgraded to use: QPR version: runtime: 5.2.73 editor: 5.2.73 5.2.73 ------ List printer fonts in Change font dialog box 5.2.72 ------ Window owner not being set properly for printer dialog 5.2.62 ------ QPRCLP=1 means make sure output fits on printable page otherwise clip output as necessary 5.2.59 ------ Remove 15000 page limit in preview 5.2.54 ------ New JPG add-on not generating print output properly Changes and New Features in 5.05 -------------------------------- None. Changes and New Features in 5.04 -------------------------------- 1. pcqutil compiled with -R 7 as it has USAGE POINTER. Changes and New Features in 5.01 - 5.03 --------------------------------------- None. Changes and New Features in 5.00 -------------------------------- 1. The ICSP2 and ICQPRW development tools are ONLY available in Windows as 32-bit executables. The panel files produced can be used in both 32 and 64 bit environments. 2. ICQPRW has been upgraded to use: QPR version: runtime: 5.2.53 editor: 5.2.53 5.2.53 ------ New JPG add-on not generating print output properly 5.2.52 ------ QPRFON x9 switch means set line height in printed multiline text to match screen Problem with special text justification 5.2.51 ------ Problem retrieving system date format 5.2.47 ------ Allow non-jpg image formats - new qprima??.dll required 5.2.45 ------ Problem with fonts in 64 bit mode 5.2.41 ------ Specify output date format with QPRDTE= (eg. MM/DD/YYYY) 5.2.32 ------ 64 bit support Problem with special characters in multi-line text file display 5.2.29 ------ Problem with printer definition 5.2.25 ------ Another problem with justified special text 5.2.18 ------ Problems with justification of special text 5.2.11 ------ Problem with justfied fields and unicode changes 5.2.8 ----- Unicode support --------------- Support for program data in UTF-8 format is provided if QPRIBM=32 is set. 5.1.34 ------ Allow for initial dialog=a call and subsequent dialog=r calls 5.1.32 ------ Problem selecting network printers 5.1.31 ------ Return printer name properly for select-printer dialog=d Justify special text 5.1.29 ------ Miscellaneous ------------- Problem after hitting cancel on exit preview message box 5.1.28 ------ Retrieve local/network printers ------------------------------- qpr-dialog=1 retrieves the first local printer qpr-dialog=2 retrieves the first network printer qpr-dialog=3 retrieves the first local/network printer qpr-dialog=n retrieves the next printer in the set till qpr-ret-code=1 returned 5.1.27 ------ Miscellaneous ------------- End-Print returns error codes from PDF add-on 3. ICSP2 has been upgraded to use: SP2 version: runtime: 5.2.57 editor: 5.2.53 5.2.57 ------ Help not working properly for container panels Problem with popup subwindows 5.2.56 ------ Problem with working-storage panels in existing windows 5.2.54 ------ Problem with special text justification Problem with copy file import 5.2.53 ------ Support for animated gif's in JPG add-on 5.2.52 ------ Problem with assigning window ownership Updated sp2.chm help file Handle configuration values longer than 256 Problem with dynamic icons Problem with special text justification 5.2.51 ------ set-mouse-file -------------- New function to set the mouse shape based on a file - .cur (static) and .ani (animated) files supported - see \windows\cursors folder for example files. Parameter is sp2-buffer with file name in sp2-bf-data. Miscellaneous ------------- Problem retrieving system date format Field Options-4 X"20" - pushbutton fields area - use program Fields area for push button text 5.2.50 ------ Class settings for disabled not being picked up correctly Allow for repeat fields with auto-input 5.2.49 ------ Field Options-4 X"10" - no icon bg clear - allow transparent graphic (png,gif) to be used with windowed icon 5.2.48 ------ Problem with colored radio buttons/check boxes 5.2.47 ------ Problem with transparency code for windowed icons Allow non-jpg image formats - new sp2ima??.dll required Problem control key handling in generator template 5.2.46 ------ Problem with transparency code for windowed icons 5.2.45 ------ Allow for transparency and alpha blending with windowed icons Stop windowed statics being redrawn unnecessarily Multi-line windowed static Make sure controls redrawn properly after anchor processing Alt-F12 returning wrong code Problem with fonts in 64 bit mode 5.2.44 ------ Problem with anchored fields in subwindows Allow for clipchildren and transparent windowed fields 5.2.43 ------ sp2-get-configuration call - put var to be queried (eg. SP2DIR) in sp2-bf-data Field as windowed static - fd-options-4 = X"08" Allow transparent background for windowed statics, radio buttons, check boxes Support set-property action=R for windows and panels 5.2.41 ------ Specify display date format with SP2DTE= (eg. MM/DD/YYYY) 5.2.38 ------ Problem with immediate return push buttons 5.2.37 ------ Allow for fields preceding grid in sp2grid sample code 5.2.36 ------ Problem with tabs 5.2.35 ------ Problem with clear-menu function 5.2.34 ------ Problem with window scrolling 5.2.33 ------ Hidden push buttons created hidden 5.2.32 ------ Grid ---- Define header fields and data fields then set panel grid flag to create grid - grid flag is panel Options-5 = X"80" - panel cell size must be 1 by 1 - number of fields divided by 2, first half assumed to be headers, second half data - all fields sized and positioned automatically - splitter fields (see below) added automatically - repeat group and window scroll bars added automatically - options may be set in panel User data: rc - total number of rows (default = 100) dw - divider width (default = 2) dh - divider height (default = 2) hd - headings y/n (default = y) sz - column resize allowed y/n (default = y) Eg. rc=500,dw=1,dh=1 - include grid panel as a subwindow if you want other fields in same window - see sp2grid.cbl for sample code for dynamically created grid Splitter field -------------- Allows mouse movement to be tracked so fields or whatever can be resized Control type = i, Type = X"06", Protection = y, Usage option = w panel-key = -32, panel-last-col = mouse column Miscellaneous ------------- Problem with special characters in multi-line text file display Backtab not working properly moving between subpanels Problem with error handling in system entry fields Allow for scroll bar when scaling a multi-line entry field Entry field margins (pd-options-6 = X"01") 5.2.30 ------ Colored radio buttons and check boxes not displaying properly Radio button in child window being checked on focus 5.2.29 ------ Problem display container panels in editor test 5.2.28 ------ Allow text color in radio buttons and check boxes Preserve window centering after editor View/Size 5.2.27 ------ pr-action=C supported for repeat groups Problem with activating child windows Check fields in other panels when handling events $141=parent of current subpanel in generator pd-tab-options X"20" means tabs handled manually Usage option = n for a subwindow field means subpanel only (no separate child window) Allow panel switch if in container pd-options-5 X"40" means panel is not visible Set Value TEXTFILE=myfile.txt to display a text file in a multi-line system field get-field-def with fd-name will search all panels in current window 5.2.26 ------ Editor issues error if you try to generate a subpanel - must generate container Copy files generated using sp2nofil.cbx can be imported into the editor - original panel file not needed Option to hold converted program info in User data (pd-options-5 X"20") fd-options-4 = X"04" means icon is a hyperlink with Help as its href 5.2.25 ------ Return on entry (fd-options-4 X"02") (sp2-key-enter-field = 31) Another problem with justified special text 5.2.24 ------ Allow for ActiveX event fired as a result of a method call 5.2.18 ------ Option to use default field value if program value is blank (fd-options-4 X"01") Panel not saved properly after directory switch for graphic Problems with justification of special text Cursor-col not being returned properly for system fields that don't initially have focus 5.2.11 ------ Problem with justfied fields and unicode changes 5.2.10 ------ Problem with autotab in system fields Cut for custom fields if SP2CUS set 5.2.8 ----- Unicode support --------------- Limited support for program data in UTF-8 format is provided if SP2IBM=32 is set. This currently only applies to static text and system entry fields. 5.2.3 ----- Generator --------- Support colors 1 and 7 Allow for program colors $119XXX where XXX is configuration variable $050x@(y) set x to a character within x specified by index y beginning at 0 Editor ------ Allow multi-line entry for multi-line push button Class changes ------------- Allow class in special text \a"myclass" Miscellaneous ------------- Set converse-data last-field items properly after container switch 5.2.2 ----- Class changes ------------- font-family recognized rather than font-name font-weight:bold recognized 5.2.1 ----- Class changes ------------- Problem with blank text if no graphics in window Dynamic icon mods need not be set if hover defined for class 5.2.0 ----- Class for text buttons ---------------------- New field property is name of a class. This name can be referenced in a regular CSS file. The CSS file should itself be referenced by configuration variable SP2CSS to activate the styles within it. The following sample definitions show all the styles that are supported: .myclass { font-family:arial; font-size:13px; color:white; background-color:#0000FF; cursor:pointer; border-color:#00FF00; border-style:solid; border-radius:10px } .myclass:hover { background-color:teal; text-decoration:underline } .myclass:active { background-color:green; text-decoration:underline } .myclass:disabled { background-color:gray; } The above styles would apply to a text button with Class set to "myclass" given that they were contained in a file referenced by SP2CSS. The corresponding field properties should be set to "default" for the styles to take effect. These properties are: Font Color Current color Border color Border type 5.0.101 ------- Miscellaneous ------------- 4. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: Windows client: 5.2.52 Windows srv: 5.2.52 Unix srv: 5.2.52 5.2.52 ------ Problem with on demand version control in sp2unbuf.dll 5.2.51 ------ Support for latest functions 5.0.42 ------ Delete-client-file (parameter=sp2-buffer) 5.0.40 ------ Get-field-def with id=-1 must go to client 5.0.39 ------ Unix/linux app server for WC/X remote web server (NOT SUPPORTED) 5.0.38 ------ Compression=NODELTA means do regular stream compression but no converse-data delta compression 5.0.32-7 -------- Unix/Linux client (NOT SUPPORTED) 5.0.31 ------ Problem saving program field data if panel changed Support for WC/X remote web server (NOT SUPPORTED) 5.0.30 ------ Support on demand avc for open-window in QPR maint mode Changes and New Features in 4.80 - 4.85 --------------------------------------- None. Changes and New Features in 4.72 -------------------------------- None. Changes and New Features in 4.71 -------------------------------- 1. Do not assume Panel files have a .pan extension when starting ICSP2 and ICQPRW. Changes and New Features in 4.70 -------------------------------- 1. Note for FormPrint Return Codes: 8 is returned by select-printer if no printer is selected in the Printer dialog. 9 is returned by print-page if no printer has been selected. Changes and New Features in 4.60 -------------------------------- 1. In the ICQPRW (Formprint) release qprnothr.dll was not being released. 2. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: Windows client: 5.0.29 Windows srv: 5.0.29 5.0.29 ------ Problem with big panels in on demand AVC 5.0.28 ------ Allow for 256 byte file names in copy-file functions 5.0.27 ------ Problem with 5.0.26 change 5.0.26 ------ Allow for failed send after reconnect 5.0.25 ------ Adjustment to PersistentConnection logic to better keep server and client in sync 5.0.24 ------ Windows server library will generate a tc.dbg file if it terminates abnormally 5.0.23 ------ ReconnectTimeout=# is number of minutes for server to wait for a new connection after initial connection is lost - after this time error will be returned or process will be cancelled depending on ReturnErrors setting. QPR-INIT should return zero if file doesn't exist but OnDemand AVC being used QPR-FILE-DEF corrupted during OnDemand AVC 5.0.22 ------ Allow up 1000 characters in execute-program command line 5.0.21 ------ Text file copy - precede server file name with "[T]" to indicate a text file Changes and New Features in 4.55 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 5.0.101 5.0.101 ------- Miscellaneous ------------- Problem repainting controls after anchor resize 5.0.100 ------- Miscellaneous ------------- Problems setting Program field length and count for dynamically defined repeat groups 5.0.99 ------ Miscellaneous ------------- Problem with hints for system fields 5.0.98 ------ Miscellaneous ------------- Problem with subwindow colors/types 5.0.97 ------ Miscellaneous ------------- Fix problem with SP2CUS=2 Stop blank lines being inserted during paste Reset $103 token in generator 5.0.96 ------ Miscellaneous ------------- SP2CUS=1 support for pasting column into a repeat SP2CUS=2 disallows copy/paste if mouse-sw=r or o 5.0.95 ------ Miscellaneous ------------- Allow more than 1 field in horizontal occurs Check for valid jpg file Changes and New Features in 4.54 -------------------------------- None. Changes and New Features in 4.53 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 5.0.94 5.0.94 ------ Miscellaneous ------------- Allow for renamed dll in SP2VST=1 logic 5.0.93 ------ Miscellaneous ------------- Set nd-name to high-values and read-next-panel will retrieve panels in current window 2. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: Windows client: 5.0.20 Windows srv: 5.0.20 Unix srv: 5.0.19 5.0.20 ------ Converse data memory not always being cleared on client 5.0.19 ------ Set RefreshOnDelay=TRUE in [ClientConfig] to allow window refresh during long running server processes Allow for window refresh during copying files to/from server Problem with large Fields areas Child window memory not always being cleared properly on server 5.0.18 ------ Allow for converse-data next-panel set to low-values 5.0.17 ------ Possible problem during ancillary file creation during on demand avc 5.0.16 ------ get-version returns version of sp2cli.dll if bf-ret-code = -1 Allow client window shift if wd-sbar-sw = s 3. ICQPRW has been upgraded to use: QPR version: runtime: 5.1.27 editor: 5.1.27 5.0.27 ------ Miscellanous ------------ End-Print returns error codes from PDF add-on Changes and New Features in 4.52 -------------------------------- 1. ICQPRW has been upgraded to use: QPR version: runtime: 5.1.26 editor: 5.1.26 5.1.26 ------ Miscellaneous ------------- Trap StartPage error Vertical justifcation not displaying properly 5.1.25 ------ ActiveX support --------------- The new qprnothr.dll must be used if you need to incorporate activeX controls in your forms - rename this dll to qpr.dll. This dll does not use a separate thread for the runtime so scrolling in print preview is not as responsive as the threaded qpr.dll. Special text ------------ Use \sx to specify a different control character (where x is the new character) to be used instead of \. Miscellaneous ------------- Printer fonts missing from font list Problem setting Program number >= 32k 5.1.24 ------ Miscellaneous ------------- Problem with RM maintenance mode 5.1.23 ------ Miscellaneous ------------- Stop reading color record in advance 5.1.22 ------ Miscellaneous ------------- Use preview thread (if active) to start print document so file name pop up displayed 2. ICSP2 has been upgraded to use: SP2 version: runtime: 5.0.92 5.0.92 ------ Miscellaneous ------------- Container panel in existing window still not working properly 5.0.91 ------ Miscellaneous ------------- Disallow click on field in another panel within same window 5.0.90 ------ Miscellaneous ------------- Set SP2CUS=1 for limited copy/paste for custom fields with right mouse button Correct vertical justify for static text 5.0.89 ------ Miscellaneous ------------- Problem with windowed icon event handling 5.0.88 ------ Miscellaneous ------------- Problem setting Program number >= 32k 5.0.84 ------ Miscellaneous ------------- Allow separator in popup menu 5.0.83 ------ Special text ------------ Use \sx to specify a different control character to be used instead of \. 5.0.82 ------ SP2OCW ------ Adjusts scaling so that scaled fixed pitch fonts will still be in sync with the scaled cell size. Set SP2OCW to the cell size that you are using. For example, if SP2OCW=2 scaling will be done in increments of 1/2 so that SP2OWD=640 would scale to 960 on a 1024 monitor rather than 1024. SP2CAS ------ Set to u or l to turn on global case conversion. The field Case property overrides this - use a value of n to specify no case. 5.0.81 ------ Miscellaneous ------------- Problem with clear-panel 5.0.80 ------ Special text ------------ Set Special text property (fd-options-3 x"80") to have multi-line custom fields accept imbedded control characters to set font and color of specific text: \fxxx - set font where xxx is font id \cxxx - set color where xxx is color id \n - new line No input is allowed into multi-line custom fields 5.0.79 ------ Miscellaneous ------------- Allow for up to 500 panels in memory 5.0.77 ------ Miscellaneous ------------- Problem with field font after scrolling 5.0.76 ------ Miscellaneous ------------- Stop reading color record in advance 5.0.75 ------ Miscellaneous ------------- Panels with zero size not clearing properly 5.0.74 ------ Miscellaneous ------------- Problem with display-field/get-field-data and numeric fields 5.0.73 ------ Miscellaneous ------------- Improve appearance of scaled down bitmaps Use black group border if no themes Support row-col-sw=2 in justified fields 5.0.72 ------ Miscellaneous ------------- Problem with text file listboxes and item-len gtr than 256 Changes and New Features in 4.51 -------------------------------- 1. FPDEMO updated. 2. SP2LOGON.PAN file updated with "hints" or "hover-over" messages for the buttons in the MAINMENU panel. These will show up when running sp2logon and allowing the mouse to "hover" over the MAINMENU buttons. Changes and New Features in 4.50 -------------------------------- 1. Updated ActiveX, including sp2ocx32.dll to 5.0.2 and ActiveX Documentation at the end of this readme. 5.0.0 ----- Using activeX controls without registering them ----------------------=------------------------ As an alternative to registering activex controls either manually or automatically, it is now possible to use a manifest file to specify control details - this is very useful for users who do not have the necessary privilege level to update the registry. This new version 5.0 of sp2ocx32.dll can be used with sp2 version 4.x. The manifest file itself is created using a standard text editor and contains the various names and ids used to identify a control - a sample manifest file is supplied for the sp2 add-on control apisimple. The ids can be retrieved from the registry by searching for the name of the ocx file that implements the control. Once the manifest file has been defined it must be linked to the sp2 icon field that will contain the activex control by specifying its name as the value of the "man_file" property. This must be done by appending the text "/man_file=..." to the Icon details (on the Icon properties popup) for the control. For example: APISIMPLE.ApiSimpleCtrl.1/man_file=apisimple.man If you need to include a path for the manifest file because it's not in the current directory, use two back slashes instead of one: /man_file=\\mydir\\apisimple.man Changes and New Features in 4.44 -------------------------------- 1. ThinClient (gui) has been upgraded to the following levels: 5.0.15 ------ New sp2unbuf.dll 5.0.15 Problem returning data > 32k after set-ocx call with oc-options=2 Changes and New Features in 4.43 -------------------------------- 1. ICQPRW has been upgraded to use: QPR version: runtime: 5.1.21 editor: 5.1.21 5.1.21 ------ 5.1.20 fix causing problems 5.1.20 ------ Miscellaneous ------------- Problem displaying print dialog if qpr-dialog=a 5.1.19 ------ Miscellaneous ------------- Problem with maintenance calls 5.1.18 ------ Miscellaneous ------------- Attempt to stop crashes associated with mouse wheel 5.1.17 ------ Miscellaneous ------------- Stop Properties label being included in forms 5.1.16 ------ Miscellaneous ------------- Problem after auto get all pages 2. ICSP2 has been upgraded to use: SP2 version: editor: 5.1.21 3. Some SP2 and QPR example programs would not compile. These have been fixed. Changes and New Features in 4.42 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 5.0.69 5.0.69 ------ Miscellaneous ------------- Problem with deleting characters in special format field sp2thred not working properly as sp2cli in thin client Problem with system field hints 5.0.68 ------ Miscellaneous ------------- wait-sw=2 not returning properly when entry field truncated Make sure current panel set after window close Test for group name properly in template file 5.0.67 ------ Miscellaneous ------------- Problem with entering key properties 5.0.66 ------ Miscellaneous ------------- Problem with generator token 110 Properties static getting into user panels 5.0.65 ------ Miscellaneous ------------- Still a problem closing windows with toolbars 5.0.64 ------ Miscellaneous ------------- Problem closing windows with toolbars 5.0.63 ------ Miscellaneous ------------- Problem with subpanels in generator Scroll justfied custom fields as necessary Allow for container panel in existing window Clear-panel must closes subwindows if container panel 5.0.62 ------ Miscellaneous ------------- No delete on resize flag causes problem with fields added out of sequence SP2END=1 not working properly Colors above x"fa" used by editor but ok for use at runtime Set field Blank first to "n" to stop highlight on entry for a system field Allow up to 11000 for initialized multiline text 5.0.61 ------ Miscellaneous ------------- Check for presence of alpha channel in 32-bit bitmap Stop scroll bars in Icon value box 5.0.60 ------ Miscellaneous ------------- Do sp2-wd-ownr-id=-3 logic if no windows open Problem with unix write-panel 5.0.59 ------ Miscellaneous ------------- Problem with Refresh only on change property Current color will highlight text icon on focus rather than mouse down if Protection = p Support anchor property for subwindow fields so subwindows can be anchored Use SP2OWN=2 as equivalent to sp2-wd-ownr-id=-3 2. Updated the notifyic.cbl example to check for scaling. Changes and New Features in 4.41 -------------------------------- 1. ThinClient (gui) has been upgraded to the following levels: 5.0.14 ------ New sp2unbuf.dll 5.0.14 Problem with big converse-data area after window switch Changes and New Features in 4.40 -------------------------------- 1. ThinClient (gui) has been upgraded to the following levels: 5.0.13 ------ New sp2tcsok.dll 5.0.13 New sp2unbuf.dll 5.0.13 Changes and New Features in 4.32 -------------------------------- 1. ICQPRW has been upgraded to use: QPR version: runtime: 5.1.15 editor: 5.1.15 5.1.15 ------ Miscellaneous ------------- Check for presence of alpha channel in 32-bit bitmap Stop scroll bars in Icon value box 5.1.14 ------ Miscellaneous ------------- Problem with qpr-color Page setup and print icons not working in editor Preview window not activated properly after using qprbmp, etc. Missing copy files 2. ICSP2 has been upgraded to use: SP2 version: editor: 5.1.15 Changes and New Features in 4.31 -------------------------------- None. Changes and New Features in 4.30 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 5.0.58 editor: 5.1.13 5.0.58 ------ Miscellaneous ------------- Problem with get-input and subpanels 5.0.57 ------ Miscellaneous ------------- Automatically close child windows to prevent problems in thin client 5.0.56 ------ Miscellaneous ------------- Allow for no decimal point when Format changed and program Decimals set Allow for 7 digit values in generator No autoskip in open panel dialog 5.0.55 ------ Miscellaneous ------------- Support SP2EBC=1 in Fujitsu version 5.0.50 ------ Miscellaneous ------------- Open help file properly 5.0.49 ------ Miscellaneous ------------- Repeat group field not always returning if Program control set 5.0.48 ------ Miscellaneous ------------- Use proper character set for font 2. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: Unix srv: 5.0.12 Windows srv: 5.0.12 5.0.12 ------ New sp2local 5.0.58 2. ICQPRW has been upgraded to use: QPR version: runtime: 5.1.13 editor: 5.1.13 5.1.13 ------ Miscellaneous ------------- Scroll bar missing in print preview on high res screens Allow for long Field areas in cbx files Changes and New Features in 4.25 -------------------------------- 1. Updates to ThinClient code. Changes and New Features in 4.24 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: editor: 5.1.12 2. ICQPRW has been upgraded to use: QPR version: runtime: 5.1.12 editor: 5.1.12 5.1.12 ------ Miscellaneous ------------- Next/previous page icons restored 5.1.11 ------ Miscellaneous ------------- Ignore mouse wheel events if not in converse or get-input 5.1.10 ------ Miscellaneous ------------- Ignore scroll bar events if not in converse or get-input 5.1.9 ----- Miscellaneous ------------- Ensure thread event objects have unique names 5.1.8 ----- Miscellaneous ------------- Terminate thread properly 5.1.7 ----- Miscellaneous ------------- Some 5.1.6 dll's built incorrectly 5.1.6 ----- Miscellaneous ------------- Problem with using mouse wheel in preview 5.1.5 ----- Miscellaneous ------------- Page number not positioned properly if window initially maximized Problems with Find facility 5.1.4 ----- Miscellaneous ------------- Rounded borders not printed properly 5.1.3 ----- Miscellaneous ------------- Problems with mouse handling during get all pages 5.1.1 ----- Miscellaneous ------------- Correct hints for first/last page 3. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: Unix srv: 5.0.10 Windows srv: 5.0.10 5.0.10 ------ Set Debug=TRUE in the [ServerConfig] section of the sp2tc.ini file to generate a debug log 5.0.9 ----- Set DoAlways=TRUE in the [AutoVersionControl] section of the sp2tc.ini file to force avc on execute-program 5.0.8 ----- Fix potential compression problems with long converse-data 5.0.7 ----- Problem with long converse-data 5.0.5/6 ------- Set BufferNoWait=TRUE in the [ServerConfig] section of the sp2tc.ini file to buffer up converse-panel with wait-sw=n Changes and New Features in 4.20 - 4.22 --------------------------------------- None. Changes and New Features in 4.12 (SP2 and QPR v5) -------------------------------- 1. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: Windows srv: 5.0.9 Use the DoAlways=TRUE in the [AutoVersionControl] section of the server sp2tc.ini to cause Automatic Version Control to run. This must be set to allow any Automatic version control downloading to work other than on-demand. Changes and New Features in 4.11 (SP2 and QPR v5) -------------------------------- 1. SP2LOGON has been updated to remove extra CLOSE-WINDOW calls that were causing ThinClient servers to crash. When using ThinClient, a CLOSE-WINDOW when no window is open can cause a server crash. In general, version 5 of SP2 is less tolerant of error conditions that could have been ignored in the past. 2. Under SP2, the sp2nofil.cbx file has been updated, 3. Using just FormPrint with ThinClient on Windows was not working unless sp2 was first initiated. 4. The Formprint fpdemo program has been updated to show the use of FormPrint without using SP2. When started with the /n switch, fpdemo will default to print mailing labels on the default printer. 5. ICSP2 has been upgraded to use: SP2 version: runtime: 5.0.47 5.0.47 ------ Miscellaneous ------------- Make sure cursor is displayed Problem after deleting static Allow for repeat vertical gap in cells when coloring group 5.0.46 ------ Miscellaneous ------------- Problem setting window title 5.0.45 ------ Miscellaneous ------------- Resize tabs if contained in a no border window 5.0.44 ------ Miscellaneous ------------- SP2DEC=32 means update Fields area even if no change 5.0.43 ------ Miscellaneous ------------- Keep memory blocks in sequence to layer panels correctly 5.0.39-42 --------- Miscellaneous ------------- Updates to support non-intel chip 6. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: Unix srv: 5.0.6 (5.0.47) 5.0.7 ----- Problem with long converse-data 5.0.5/6 ------- Set BufferNoWait=TRUE to buffer up converse-panel with wait-sw=n 5.0.4 ----- Support for new v5 functions 5.0.3 ----- Problem with v5 set-record call 5.0.2 ----- Problem with new code to clear out child window memory on client 5.0.1 ----- Get subpanels on demand Notify server when subwindows opened/closed/entered/exited Allow for compression of big converse-data Free up child window memory when parent closed 5.0.0 ----- Allow for big converse-data and panel record 4.1.48 ------ unix name clashes suppress version control if in a second instance of sp2tccli 4.1.47 ------ Check for duplicate window error before doing ondemand logic Changes and New Features in 4.10 (SP2 and QPR v5) -------------------------------- 1. !!!! IMPORTANT NOTE: !!! Once you start editing panel files (.pan) with a version 5 editor either ICQPRW or ICSP2, that file cannot be moved back to a version 4 system. Please make copies of panel files if you wish to support both versions! 2. ICSP2 has been upgraded to use: SP2 version: runtime: 5.0.38 editor: 5.1.0 5.0.38 ------ 5.0.37 ------ sp2-execute-file ---------------- move "myfile.doc" to sp2-bf-data call "SP2" using sp2-execute-file sp2-buffer If you want to wait till app has finished: move "-w myfile.doc" to sp2-bf-data call "SP2" using sp2-execute-file sp2-buffer 5.0.20 (beta) ------------- Containers ---------- Set subwindow field Usage option to "t" to make a child window initially active Force proper resizing of child windows within maximized container Allow clipchildren property in tabs parent Miscellaneous ------------- Set field Options-3 x"20" flag to suppress use of return as new line within multi-lines 5.0.18 (beta) ------------- Miscellaneous ------------- Handle gradient as window background color 5.0.14 (beta) ------------- Miscellaneous ------------- Allow additional open windows Draw 32bit bitmaps with alpha channel 5.0.10 (beta) ------------- Miscellaneous ------------- Adjustments to support container panels in thin client 5.0.9 (beta) ------------ Miscellaneous ------------- Allow for long reclen in internal functions used by tc avc 5.0.8 (beta) ------------ sp2check -------- -L option creates log called checked.log -M option deletes unused menus Miscellaneous ------------- Allow for long items in get/set-panel/field-def calls Support long items in property calls Alt+function keys SP2RTL is the same as SP2LTR Increase maximum number of panel file index entries to around 4500 5.0.7 (beta) ------------ Miscellaneous ------------- Check century is 1900, 2000 or 2100 if SP2CEN set 5.0.6 (beta) ------------ Panel colors and types area --------------------------- Maximum size increased from 32k to 2gb Only size limit on regular repeat group is 32k occurrences Visual styles ------------- Set SP2VST=1 to activate visual styles without the need for a manifest file Miscellaneous ------------- Must set field Options-3 x"10" flag to make a pushbutton multi-line New sp2check with option to create checked.log 5.0.5 (beta) ------------ HTML help --------- HTML help (.chm files) is now supported in the same way as WinHelp (.hlp files). Set panel and field Help keywords to point to keywords embedded in the html. Scaling ------- Set SP2OAR=1 to maintain aspect ratio during scaling with SP2OWD and SP2OHT 5.0.4 (beta) ------------ Miscellaneous ------------- Set fd-max-len to -1 and set-field-def will calculate it based on fd-format Multi-line pushbuttons Field Options3 x"04" flag means no tab stop Long file names allowed for activex controls if Format set Set fd-output=r on display-field call to force refresh of an icon Hints on non-icon fields ------------------------ Set field Options3 x"08" flag and Message text will be displayed as a hint Notify icon ----------- Use the set-notify-icon function to place an icon in the notification area of the task bar. Pass parameter sp2-buffer with sp2-bf-data set to the text to appear in the icon hint. The icon itself will be the window icon set by the first panel file opened or the set-icon-file-name function. Use an initial hidden window with border set to "f" if you want to avoid a standard icon on the task bar and then define the main window with border set to "r" so that it's owned by the hidden window. See sample program notifyic for suggested code. 5.0.1 (beta) ------------ Vertical scroll repeat ---------------------- Set panel Options-5 x"10" flag to cause the same behavior as window Scrollbar switch = r Allows container panels to be used to define grids, etc. Causes the window vertical scrollbar to control the repeat group in the window's panel Allows the repeat group to scroll horizontally within the window so that more columns can be defined than are originally visible See horzscrl.pan for example Unprotected subwindow fields ---------------------------- Allows the panel referenced by the subwindow field to be given focus as a result of hitting tab/backtab in another field in the container panel - including the last or first field of another subpanel See horzscrl.pan for example Splitters and frames -------------------- Use window Border = v or h to define vertical or horizontal splitter windows to delimit frames within containers All resizing is handled automatically if the container has More options x"04" flag set See frames.pan for example 5.0.0 (beta) ------------ Introduction ------------ This release is hopefully about making things easier. Panel size ---------- Maximum panel size increased from 64kb to 1mb Maximum number of fields increased from 500 to 5000 Panel fields area ----------------- Maximum fields area size increased from 32k to 2gb See newrep and newrep2 programs for simplified extended repeat group logic Container panels ---------------- Set panel Options-4 x"80" flag for container panel (see Properties box below) Use Subwindow fields (see below) to define subpanels Handle all windows in subsystem using container panel converse-data area Ideal for handling tab windows - see newtabs program Subpanel fields area, etc. included in container panel area by generator Current subpanel specified by next-subpanel and last-subpanel Set next-subpanel to low-values to display container panel or an external panel Dialog box subpanel (see below) closed automatically by enter, escape or close Set Options-5 x"01" flag for return-on-open (see Properties box below) Set Options-5 x"02" flag for return-on-entry (not popup)(see Properties box below) Set Options-5 x"04" flag for return-on-exit (not popup)(see Properties box below) Set Options-5 x"08" flag for return-on-close (see Properties box below) See newexamp program Subwindow fields ---------------- Control type = w Value defines panel/window to be opened Always a one to one panel to window correspondence Usage option = low-value specifies a child window opened immediately Usage option = p specifies a popup window (dialog box) opened as needed Help key specifies key to open popup window Help key may link to a Control key, pushbutton/icon Help key or menu Accelerator key Set-record function ------------------- Records kept in memory until all container panels closed Font and color records now supported so fonts.sp2 doesn't have to be distributed Generator template ------------------ Extra code for all Key values returned including key-window-open, etc. Extra code to handle subpanels Extra code in sp2nofil.cbx for font and color set-record calls Properties box -------------- Reorganized with binary options listed separately Allow properties to be set for multiple rubber-banded items (fields only) in editor Gradient background colors -------------------------- Specify start and end RGB colors in editor Use co-fg-bg (2) and co-fg-bg (3) with set-color-def Set co-type (3) to "h" for horizontal gradients or "v" for vertical Text icons ---------- Set Special format=t for simple colored buttons with text Current color specifies color when clicked These icons can also be used for simple tabs with a different look - see newtabs2 New tab styles -------------- Set Tabs Options x"01" flag for focus (same as SP2TAB) Set Tabs Options x"02" flag for multi-line (same as SP2TAB) Set Tabs Options x"04" flag for vertical Set Tabs Options x"08" flag for bottom/right Set Tabs Options x"10" flag for old-style XP/Vista themes do not support vertical/right/bottom tabs so you automatically get non-themed (old-style) tabs if you select anything but default (top) tabs Miscellaneous ------------- Allow current item to be changed during get-next-def sequences Justify=v (vertical) for static text Field border color Rounded border for groups and icons Flat border (usually light blue) for fields, groups and repeats Set field options-3 x"02" flag for delayed combobox select - only if dropdown closed Allow cursor skip in system entry fields in insert mode (if SP2EDT=1/2 set) Flat look and feel in editor 3. ICQPRW has been upgraded to use: QPR version: runtime: 5.1.0 editor: 5.1.0 Major changes in 5.1 -------------------- Form size --------- Maximum form size increased from 64kb to 1mb Maximum number of fields increased from 500 to 5000 Preview facility ---------------- Paging controlled by scroll bar Page number display Special text ------------ Multi-line text fields support a new property to allow imbedded control characters to set font and color of specific text. See sample program spectext. Print on top ------------ New property for a field useful for printing text that overlays a form - such as "SAMPLE" or similar. See sample program printtop. Set-record function ------------------- Font and color records now supported so fonts.qpr doesn't have to be distributed Extra code in qprnofil.cbx for font and color set-record calls Properties box -------------- Reorganized with binary options listed separately Allow properties to be set for multiple rubber-banded items (fields only) in editor Note on fonts and colors for existing users ------------------------------------------- Colors and fonts are stored in a file called fonts.qpr. If this file is not found the editor/runtime will look for a file called fonts000.qpr but updates will still be written to fonts.qpr. The fonts for the samples above are included in fonts000.qpr rather than fonts.qpr so that existing fonts will not be overwritten but this also means that the samples may display with incorrect fonts. demonofi, spectext and printtop use set-record to set fonts so are not effected. ------------------------------ Sample programs and form files ------------------------------ demoform - the basics demonofi - same as above without need for form or fonts file demoprvw - same as above with multiple pages to demo preview facility demopick - same as above but pick a printer from what's available demochg - same as above but dynamically change form properties demobmp - same as above but dynamically change a bitmap image newform - create a form from scratch programmatically gridline - another dynamic form with a grid multi - multiple forms on a page spectext - text with imbedded font and color control characters demotop - demo form with overlaid text qprglob - global changes to a form file 2. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: Windows srv: 5.0.4 Windows client: 5.0.4 5.0.4 ----- Support for new v5 functions 5.0.3 ----- Problem with v5 set-record call 5.0.2 ----- Problem with new code to clear out child window memory on client 5.0.1 ----- Get subpanels on demand Notify server when subwindows opened/closed/entered/exited Allow for compression of big converse-data Free up child window memory when parent closed 5.0.0 ----- Allow for big converse-data and panel record 4.1.48 ------ unix name clashes 4.1.47 ------ Check for duplicate window error before doing ondemand logic 4.1.46 ------ Check for overflow when receiving get-input data 4.1.45 ------ Make sure avc files are copied properly 4.1.45 ------ Make sure avc files are copied properly 4.1.46 ------ Check for overflow when receiving get-input data 4.1.45 ------ Make sure avc files are copied properly 4.1.45 ------ Make sure avc files are copied properly 4.1.44 ------ Problem with timeout when using html tunnelling 4.1.43 ------ Allow up to 256 for StartupCommand Allow allothers= for non-system passwords 4.1.42 ------ Support for latest sp2 functions 4.1.41 ------ Remove redundant log entries related to PersistentConnection feature 4.1.40 ------ Problem with printserver socket connection Use TimeoutRetries=# in [ServerConfig] in server sp2tc.ini to cause # retries after a 10060 error 4.1.39 ------ Allow up to 80 for customized dialog box and message text 4.1.38 ------ Problem with more than 50 open windows New sp2local.dll 4.1.37 ------ Remove message box for copy file create error Changes and New Features in 4.07 -------------------------------- None. Changes and New Features in 4.06 -------------------------------- 1. In ThinClient, the SP2-GET-VERSION call returns the version number of the server library (sp2local). 2. ICSP2 and ICQPRW helps have been updated and an Info switch has been added. Changes and New Features in 4.05 -------------------------------- None. Changes and New Features in 4.04 -------------------------------- 1. Fixed ICSP2 and ICQPRW to handle reading initial environment entries correctly. 2. In certain cases the Windows ThinClient client (icrunrc) could get hung going into SP2 mode when running in certain environments. 3. ICQPRW was not providing support for printing samples. Changes and New Features in 4.02-4.03 ------------------------------------- None. Changes and New Features in 4.01 --------------------------------------- 1. The SP2-GET-CLIENT-IP call was returning an incorrect value when using ThinClient. Changes and New Features in 4.00 -------------------------------- 1. The Windows ThinClient client (icrunrc) allows both Character and Gui mode just as a Thickclient. As such, there is only one ThinClient client executable (icrunrc). NOT SUPPORTED WHEN THE SERVER IS HP-UX. 2. ThinClient provides for automatic reconnection if the network is disconnected. NOT SUPPORTED WHEN USING HP-UX. Please see the readic.txt for more on this. Changes and New Features in 3.67 -------------------------------- 1. Fix to ICQPRW to allow Printing samples to work. Changes and New Features in 3.66 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 4.1.167 4.1.167 ------- Miscellaneous changes --------------------- Problem with always using main window as owner 4.1.166 ------- Miscellaneous changes --------------------- Repaint transparent icon properly if greyed out Problems caused by new toggle-thread function so disable it 4.1.165 ------- Miscellaneous changes --------------------- Problem with negative inital values ending in zero Set SP2LTR=1 for left to right menus Ctrl-Shift-F12 key causes crash Use last main window as window owner Set field More options x"80" (128) flag to stop transparent fields flashing Problem checking menu overrides Problem with transparent icons 4.1.164 ------- Miscellaneous changes --------------------- Problem with tab key in tab panels 4.1.163 ------- Miscellaneous changes --------------------- Problem with SP2PFK 4.1.162 ------- Miscellaneous changes --------------------- Problem deleting characters in system entry date field 4.1.161 ------- Miscellaneous changes --------------------- Problem retieving data from multi-line entry fields Repaint problem 4.1.160 ------- Miscellaneous changes --------------------- Allow the value of fields with transparent backgrounds to be changed 4.1.159 ------- Miscellaneous changes --------------------- Left justify numerics Hidden fields in repeat groups causing tabbing problems sp2-toggle-thread function -------------------------- Parameter: null-parm. When using sp2thred.dll, allows thread mode to be turned off so calls like sp2-get-field-def will run more quickly. Call again to resume regular thread mode. 4.1.158 ------- Miscellaneous changes --------------------- Set SP2PFK=1 to use top 4 keys on numeric keypad as F1-F4 like vt keyboards 2. ICQPRW has been upgraded to use: QPR version: runtime: 4.1.169 editor: 4.1.169 4.1.169 ------- Miscellaneous changes --------------------- Set qpr-color to x"01"/x"02" to control monochrome/color printing 4.1.159 ------- Miscellaneous changes --------------------- Left justify numerics 4.1.156 ------- Miscellaneous changes --------------------- Check for device-list overflow Changes and New Features in 3.65 -------------------------------- None. Changes and New Features in 3.64 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 4.1.157 4.1.157 ------- Miscellaneous changes --------------------- Prevent truncation of long icon details in editor Set fd-prog-spec = x"20" on a display-field call to use data from fd-initial-val Problem with using set-property on a field in a repeat group 4.1.156 ------- Miscellaneous changes --------------------- Problem with activex control repaint 4.1.155 ------- Miscellaneous changes --------------------- Problem with returning multiple list box selections Allow up to 11000 for initialized multiline text 4.1.154 ------- Miscellaneous changes --------------------- Set panel-next-occurs correctly after toolbar selection Return Protection as modified by -T item in sp2-fd-output on get-field-data call 4.1.153 ------- Miscellaneous changes --------------------- Set field Blank first to "n" to stop highlight on entry for a system field Support Case property for unprotected combo boxes 4.1.151 ------- Miscellaneous changes --------------------- Problem with SP2EDT logic 4.1.150 ------- Miscellaneous changes --------------------- SP2FSW=1 prevents panel searches in non-current panel files 4.1.149 ------- Miscellaneous changes --------------------- Problem with new field Border=a Fields left empty after anchor processing System date format not being picked up for current user Changes and New Features in 3.63 -------------------------------- None. Changes and New Features in 3.62 -------------------------------- 1. The Help feature was not working properly in ICSP2 and ICQPRW. 2. Under UNIX, at times when using SP2, auto downloading was not working. (icrun update 01). Changes and New Features in 3.61 -------------------------------- 1. ICQPRW has been upgraded to use: QPR version: runtime: 4.1.155 editor: 4.1.155 4.1.155 ------- Miscellaneous changes --------------------- Allow up to 11000 for initialized multiline text 4.1.154 ------- Miscellaneous changes --------------------- Don't create bmp file for PDF dummy icon field 4.1.152 ------- Miscellaneous changes --------------------- Problem using PDF add-on after print preview Check QPRDIR when deleting temporary bmp files Problem with new reset printer logic when used with print preview Changes and New Features in 3.60 -------------------------------- 1. ICSP2 and ICQPRW now better handle multiple arguments and show the appropriate icons. 2. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: Unix srv: 4.1.36 Windows srv: 4.1.42 Windows client: 4.1.42 4.1.42 ------ Support for latest sp2 functions 4.1.41 ------ Remove redundant log entries related to PersistentConnection feature 4.1.40 ------ Problem with printserver socket connection Use TimeoutRetries=# in [ServerConfig] in server sp2tc.ini to cause # retries after a 10060 error 4.1.39 ------ Allow up to 80 for customized dialog box and message text 4.1.38 ------ Problem with more than 50 open windows Use InitialConnectError= and ConnectTitle= in [LoginDialog] in sp2tc.ini to customize connection error messagebox New sp2local.dll 4.1.37 ------ Remove message box for copy file create error 3. Updated ActiveX, including sp2ocx32.dll to 4.1.27. 4.1.27 ------ Problem with closing down an object 4.1.25 ------ New size not being retained 4.1.24 ------ Object not resizing properly 4.1.23 ------ Problem with invalid properties when collection object used 4.1.22 ------ Make sure value-type is honored if options=16 set 4.1.21 ------ Set /run_app=2 in sp2 Value property to run control as a separate process 4.1.20 ------ Allow an array to be passed as a parameter Problem with error handling 4. ICSP2 has been upgraded to use: SP2 version: runtime: 4.1.148 4.1.148 ------- Miscellaneous changes --------------------- Problem with mouse handling New field Border=a setting to align no border custom fields like statics Handle list box drive selection properly Missing initial click on radio buttons and check boxes 4.1.147 ------- Miscellaneous changes --------------------- Make sure Fields area is ignored for toolbar if SP2TBF=1 set Changes and New Features in 3.57 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 4.1.146 editor: 4.1.146 4.1.146 ------- Miscellaneous changes --------------------- get-field-data returns index (0,1,2,...) of selected item in listbox in fd-prog-off Long file names supported for audio/video icons if Format set 4.1.145 ------- Miscellaneous changes --------------------- Return last-fld-id properly after return on exit field in repeat group 4.1.142 ------- Miscellaneous changes --------------------- sp2thred hanging sometimes when used with activex 4.1.141 ------- Miscellaneous changes --------------------- Set sp2-wd-system-menu to X"20" on a set-window-def call to disable the close button Problem with toolbar if focus on a push button in main window area Allow comboboxes to be required 4.1.140 ------- sp2-bring-to-foreground ----------------------- Same as sp2-activate-window except that it should force window to foreground in all cases 4.1.139 ------- Miscellaneous changes --------------------- Still a problem with 4.1.36 clipchildren issue 2. ICQPRW has been upgraded to use: QPR version: runtime: 4.1.146 editor: 4.1.146 4.1.146 ------- Miscellaneous changes --------------------- Closing progress window cancels current operation Support for resetting printer during print preview 4.1.145 ------- Reset printer ------------- Set qpr-dialog to "r" on a select-printer call to reset the printer properties before calling end-print. The value in qpr-device-to-select must be unchanged from the initial select-printer call. This feature is not currently supported in connection with the print preview facility i.e. if printing is done after previewing the last select-printer call will apply to all pages - this shortcoming will be fixed in a future release. 4.1.129 ------- Miscellaneous changes --------------------- Allow for 5 digits in generated picture clause 4.1.128 ------- Miscellaneous changes --------------------- Make sure error returned if printer name invalid 3. SP2 and FormPrint manuals updated to 4.1.117 and 4.14 respectively. Changes and New Features in 3.56 -------------------------------- 1. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: Windows srv: 4.1.36 Windows client: 4.1.36 4.1.36 ------ Check compressed data doesn't exceed 32k Problem with long converse-data areas Check return codes when copying files qpr-init must return ret-code 4.1.35 ------ 4.1.34 ------ Better checking for file access on client 4.1.33 ------ Return on set-font-def and set-color-def so new id is returned 4.1.30 ------ 4.1.28 ------ Set ReturnErrors to a number to cause termination after a certain number of errors 4.1.27 ------ Check window actually exists before cleanup Check for log file open failure 4.1.26 ------ Problem with execute-program buffer greater than 128 2. ICSP2 has been upgraded to use: SP2 version: runtime: 4.1.138 4.1.138 ------- Miscellaneous changes --------------------- Problem with anchor logic if menu or status bar present Allow Types to be used to change system fields from display only to greyed Ensure set-active-window brings window to foreground when using sp2thred New anchor option ----------------- Set panel Options-4 x"40" switch to force anchor processing for a panel loaded into an existing window i.e. panel will be resized to fit into existing window. 4.1.137 ------- SP2NUM config variable ---------------------- Set to 1 to cause the operating system to be referenced for the character to be used for the decimal point and thousands separator and the position of the negative sign. This overrides the SP2DEC setting. 4.1.136 ------- Miscellaneous changes --------------------- Problem with Current color for system fields if clipchildren on 4.1.135 ------- Miscellaneous changes --------------------- Panel icon not being displayed in toolbar window Input not bing picked up if system entry field changed from protected to input Scale video icons if Special format = f New field Type for video icons - y = auto-repeat 4.1.134 ------- Miscellaneous changes --------------------- Disallow scrolling if sbar-sw, anchor and minsize all set 4.1.133 ------- Center window ------------- Set Row and Column to -9999 to center window on screen Set Row and Column to -9998 to center window in client area of parent or owner 4.1.132 ------- Miscellaneous changes --------------------- Problem with wd-ownr-id in thin client 4.1.130 ------- Miscellaneous changes --------------------- Adjust total window size if physical size changes after scaling 4.1.129 ------- Miscellaneous changes --------------------- Problem with repeat group displacment when SP2SAV=2 set Allow for 5 digits in generated picture clause Data being incorrectly returned from DIRLIST list boxes 3. SP2 documentation has been updated to 4.1.127. (Both an sp2.hlp file and sp2v41127.pdf file). Changes and New Features in 3.55 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 4.1.127 editor: 4.1.127 4.1.127 ------- Panel icons ----------- Set the panel Options-4 x"20" switch to cause sp2 to search for an icon file named ppppppp.ico where pppppppp is the name of the panel. This icon will be displayed in the title bar instead of the standard system icon. The icon will be set or reset when the panel is initially displayed or when a set-window-def call is made. Miscellaneous changes --------------------- Problem with cursor positon after repeat group horizontal scrolling 4.1.126 ------- Listbox from a file ------------------- Set field Value property to "TEXTLIST=myfile" where myfile is the name of a text file. Item length (derived from Format) must be at least as long as Value otherwise the editor will truncate the file name. Use the Fields area item to set and receive selections as for regular listboxes. Use get-field-data to retrieve multiple selections using multiple calls (see 4.1.125) if necessary. 4.1.125 ------- Save file --------- Set fi-mode=s on query-file call to display dialogbox with Save button rather than Open button. Second half of fi-name is taken as titlebar text as for fi-mode=t get-field-data for multi-select list boxes ------------------------------------------ If fd-prog-spec is set to x"20" then fd-prog-num holds the number of the first selection to be returned. This allows multiple calls to be made to retrieve more than 32k of data. fd-initial-len controls how many selections will be returned each time. fd-prog-num is automatically reset to point to the next selection after the current block. 4.1.122 ------- Miscellaneous changes --------------------- Mousewheel support Problem with clear-menu function 4.1.121 ------- Miscellaneous changes --------------------- Do numeric edit before required check 4.1.120 ------- Miscellaneous changes --------------------- 4.1.95 change prevents timeout-key being out in keyboard buffer 4.1.117 ------- Miscellaneous changes --------------------- Erroneous scrollbars in Vista 4.1.116 ------- Miscellaneous changes --------------------- Problem with SP2EDT=64 4.1.115 ------- Miscellaneous changes --------------------- Allow timeout to be reset with sp2-set-configuration 4.1.113 ------- Miscellaneous changes --------------------- Problem with right click logic 4.1.112 ------- Miscellaneous changes --------------------- Problem with closing thin client plugin window 4.1.111 ------- Miscellaneous changes --------------------- Problem with message line and multi-panel windows 4.1.110 ------- Miscellaneous changes --------------------- Anchor problems 4.1.109 ------- Miscellaneous changes --------------------- Problem with delete-group function 4.1.105 ------- Miscellaneous changes --------------------- Problem with anchor processing after max/min/restore sequence 4.1.103 ------- Miscellaneous changes --------------------- Current comboboxes loses value during scrolling Incorrect mouse coordinates returned when Row column x"08" switch set 4.1.102 ------- Miscellaneous changes --------------------- Contents of status bar sometimes incorrect if being used by multiple windows 4.1.101 ------- Miscellaneous changes --------------------- Problem with repeat group occurrences after anchor processing 4.1.100 ------- Miscellaneous changes --------------------- Problem with repeat group occurrences after anchor processing 4.1.99 ------ Miscellaneous changes --------------------- Problem with multi-panel windows Refresh problem after anchor processing Problem with large panels on unix 4.1.98 ------ Anchor enhancements ------------------- A field is anchored by default to the window top and left borders so that it doesn't move when the window size changes. New settings for the Anchor property change this: x"04" - Free left allows a field anchored to the right (x"01") to move horizontally rather than change size x"08" - Free top allows a field anchored to the bottom (x"02") to move vertically rather than change size Groups and repeat groups now have an Anchor property that works the same as for fields. Avoid setting the Bottom anchor for fields in a repeat otherwise the field occurrences will most likely overlay each other. 4.1.97 ------ Miscellaneous changes --------------------- Foreground color used for group border if Border type is a or A 2. ICQPRW has been upgraded to use: QPR version: runtime: 4.1.127 editor: 4.1.127 4.1.124 ------- Miscellaneous changes --------------------- Timeout being erroneously returned multiple times 4.1.123 ------- Miscellaneous changes --------------------- Return -1 if printer dialogbox times out 4.1.122 ------- Miscellaneous changes --------------------- Problem with timeout on printer dialogbox 4.1.121 ------- Miscellaneous changes --------------------- Include wd-cell-width and wd-cell-height in qprmaint.cpy 4.1.104 ------- Miscellaneous changes --------------------- Error during scrolling in preview 4.1.101 ------- Miscellaneous changes --------------------- Temporary preview files being written to wrong folder 4.1.100 ------- Miscellaneous changes --------------------- Hidden radiobuttons still visible 4.1.99 ------ Miscellaneous changes --------------------- Problem with using preview mode after printing directly Changes and New Features in 3.54 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 version: runtime: 4.1.96 editor 4.1.96 4.1.96 ------ Miscellaneous changes --------------------- Problem with 4.1.95 change to close tab container window 4.1.95 ------ Miscellaneous changes --------------------- Close tabs container window if all tab windows closed Set SP2ENK=1 to use the End key as a control key System keyboard buffer ---------------------- If the first key slot in bf-data is set to -1, then set-keyboard-buffer will set the system buffer rather than the sp2 internal buffer. This allows you to prime menu bars by loading the buffer up with an F10 key to activate the menu, followed by mnemonic keys to select menu options. Currently only F1 thru F10 and upper-case letters and numbers are supported. 4.1.92 ------ Miscellaneous changes --------------------- Problems with menu help if toolbar present 4.1.91 ------ Miscellaneous changes --------------------- Ensure all Restore events are trapped 4.1.90 ------ System menu ----------- Suppress items on the system menu by setting sp2-wd-system-menu on a set-window-def call to any combination of the following: x"01" - suppress Restore x"02" - suppress Move x"04" - suppress Size x"08" - suppress Minimize x"10" - suppress Maximize 4.1.88 ------ Anchor property --------------- Causes a field to change size relative to the containing window size. The following properties should be set: field Anchor property - x"01" change relative to right window border - x"02" change relative to bottom window border panel Options-4 property - x"08" panel contains anchor fields window Options-3 property (usually derived from panel property above) - x"40" window contains anchor fields panel Options-3 property - x"01" minimum size for containing window window More options property (usually derived from panel property above) - x"16" minimum size for window 2. ICQPRW has been upgraded to use: QPR version: runtime: 4.1.97 editor 4.1.97 4.1.97 ------ Miscellaneous changes --------------------- Foreground color now used to color border if group Border type is a or A Use qpr-doc-name-l instead of qpr-doc-name if more that 30 characters needed Use qpr-paper-source-l instead of qpr-paper-source if tray has has an id gtr than 255 Run getbins.exe to get a list of tray ids for a particular printer 4.1.95 ------ Miscellaneous changes --------------------- Progress window not being closed after exiting without printing Preview find facility not highlighting items properly 4.1.89 ------ Miscellaneous changes --------------------- Use QPRDIR for temporary preview files Changes and New Features in 3.53 -------------------------------- None. Changes and New Features in 3.52 -------------------------------- 1. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: UNIX srv: 4.1.19 Windows srv: 4.1.24 Windows client: 4.1.27 ThinClient Changes Log 4.1.24 ------ 4.1.23 ------ 4.1.22 ------ 4.1.21 ------ 4.1.20b ------- 4.1.20a ------- 4.1.20 ------ 4.1.19 ------ Problem with sending data over 32k on big-endian machines 4.1.18 ------ Further correction for multiple panel processing 4.1.17 ------ Problems on client with multiple panels in a window Allow wildcards in [AutoVersionControlSourceFiles] eg. *.pan= Check log file created successfully 4.1.16 ------ 4.1.15 ------ 2. ICSP2 has been upgraded to use: SP2 version: runtime: 4.1.87 editor 4.1.87 4.1.87 ------ Miscellaneous changes --------------------- Editor test displays key returned 4.1.86 ------ Miscellaneous changes --------------------- Problem with extended repeat groups and group Select type = Color-hold 4.1.84 ------ Miscellaneous changes --------------------- Problem restoring window when focus on a system field 4.1.83 ------ Miscellaneous changes --------------------- Problem with multi-line entry fields in groups with Current color set 4.1.82 ------ Miscellaneous changes --------------------- Problem with borders on system entry fields Set window Hide-sw to "q" or "r" to remove or restore the min/max options 4.1.81 ------ Miscellaneous changes --------------------- Set fi-share to x"10" to force current folder to be listed for open-file Only time out menu if SP2TMO set Use SP2FIL=# to set number of panel files which may be open (default=4) 4.1.80 ------ Miscellaneous changes --------------------- Problem with range property after reducing field length 3. ICQPRW has been upgraded to use: QPR version: runtime: 4.1.87 editor 4.1.87 4.1.87 ------ Miscellaneous changes --------------------- Use QPRIBM=n+16 to allow Find facility to work with national characters from non-ansi fonts Progress window can be used with auto-get-all-pages if QPRKBF=2 4.1.85 ------ Miscellaneous changes --------------------- Set Allow copies to "n" to disable Copies in printer dialog box 4.1.83 ------ Miscellaneous changes --------------------- Dialog=s not returning list of printers properly 4.1.82 ------ Miscellaneous changes --------------------- Some keys not working as Preview menu accelerators 4.1.80 ------ Miscellaneous changes --------------------- Allow for printer names up to 256 characters Changes and New Features in 3.51 -------------------------------- None. Changes and New Features in 3.50 -------------------------------- 1. ICQPRW has been upgraded to use: QPR versions: runtime: 4.1.78 editor: 4.1.78 4.1.78 ------ New Dialog settings on select-printer call ------------------------------------------ "l" - return list of printers - same as "s" but returns 0 rather than -10 "p" - select printer - same as "s" but ret-code need not be set to -10 "f" - return first available printer in qpr-device-to-select "n" - return next available printer in qpr-device-to-select Both "f" and "n" set ret-code to 1 if no more available printers Miscellaneous changes --------------------- Suppress message box when cancel hit on Print dialog box Progress box during printing range must show only pages actually printed 4.1.77 ------ Miscellaneous changes --------------------- Problem saving data for current page after Get all pages 4.1.76 ------ Miscellaneous changes --------------------- Problem with Print range dialog box after radio button change below 2. ICSP2 has been upgraded to use: SP2 versions: runtime: 4.1.78 editor: 4.1.78 4.1.78 ------ SP2DTE config variable ---------------------- Set to 1 to cause the system date format to be used for all dates regardless of the field format. The field format is still used in the editor to derive the length of the field i.e. a length of 8 gives a 2 digit year, 10 gives a 4 digit year. Miscellaneous changes --------------------- SP2TMO causing erroneous user response after multiple message boxes Return spaces if nothing selected in a listbox F1 may be interpreted wrongly if focus on a pushbutton Data not being returned properly after SP2EDT=64 processing Set field More options x"20" bit to display combobox dropdown automatically (on focus) Set window Scrollbar switch to "s" to scroll window based on new displacements Set converse-panel Cursor switch to "s" to stop scrolling to make cursor visible Allow repeat group scrollbar to be hidden or greyed out using set-property call Allow deletion across special characters in system entry fields Changes and New Features in 3.48 -------------------------------- 1. Updated ActiveX, including sp2ocx32.dll to 4.1.19. Including updating sp2excel.zip 4.1.19 ------ Internal table allows for 1000 entries but only 100 being checked 4.1.18 ------ Double character license keys 4.1.17 ------ Allow 2000 bytes per predefined property setting (in Value property) 4.1.16 ------ Support events for an object pointer using get-type=12 4.1.15 ------ Problem with accessing valid values for a property 4.1.14 ------ Problem handling left over events after a control has been deleted 4.1.13 ------ Correction to new print stuff 4.1.12 ------ Support printing controls from FP 2. ICSP2 has been upgraded to use: Sp2 versions: runtime: 4.1.75 editor: 4.1.75 4.1.75 ------ SP2EDT enhancement ------------------ Add 64 to the SP2EDT value to cause additional character-by-character input checking (does not effect regular end-of-field checking) - only allow a numeric character to be entered in a numeric field - truncate last character if field length exceeded in insert mode Miscellaneous changes --------------------- Problem clicking outside text in right-justified custom field Debug file being erroneously created by set-font-def function 3. ICQPRW has been upgraded to use: QPR versions: runtime: 4.1.75 editor: 4.1.75 4.1.75 ------ Miscellaneous changes --------------------- Problem with printing a large number of pages from preview Use internal routines to draw radio buttons and check boxes in preview Debug file being erroneously created by set-font-def function Changes and New Features in 3.47 -------------------------------- 1. Ocxgen has been updated. 1. ICSP2 has been upgraded to use: SP2 versions: editor: 4.1.74 runtime: 4.1.74 4.1.74 ------ Miscellaneous changes --------------------- Focus problem after resizing window with toolbar Left justification messes up special format fields More options x"40" switch conflict with secure fields 4.1.73 ------ Query-file (fi-mode=d) ---------------------- Set fi-share=x"04" to set initial directory in first half of fi-name Miscellaneous changes --------------------- Allow timeout if help panel active 4.1.72 ------ Miscellaneous changes --------------------- Problem with common dialog boxes and TMO configuration variable Possible memory problem with multiple end-session calls 4.1.71 ------ Miscellaneous changes --------------------- Problem with repaint on clear-panel 4.1.70 ------ Miscellaneous changes --------------------- Allow trailing blanks in system entry if Row column switch = 2 Problem with returning character Z with Wait switch = 2 set-property can cause memory use to be increased unnecessarily Problem with set-property long used with short lengths 4.1.69 ------ Miscellaneous changes --------------------- Problem with return-on-select radiobuttons in an auto-select group Correct no-panel-file generator template to allow for large panels 4.1.68 ------ List box drive listing ---------------------- Set Value property to DRVLIST to get just a list of drives (no directories). Selection will be returned as "c:", "d:", etc. Query-file enhancements ----------------------- 1. Set fi-mode to "d" to display a list of directories only. Additional title text or special instructions for the user can be placed in the second half of fi-name. Selected directory is returned in fi-name. 2. Set fi-share to x"08" to allow multiple files to be selected. Selections returned in fi-name with directory first followed by a low-value, then first file followed by a low-value, then second file followed by a low-value and so on. Use unstring command delimted by low-value to split out the names. Character processing for system entry fields -------------------------------------------- Set Wait switch to "2" to cause control to be returned after every character entered in a system entry field. Configuration variable SP2EDT=1 or 2 switch must also be turned on. Set Row column switch to 2 to retrieve the offset of the cursor within the field - this offset is returned in Last column and should be used to set the value of Cursor column before the next converse-panel or get-input call. Note that this wait-sw setting can only be used with system fields and is different to wait-sw = "1" which immediately returns control for all keys entered but does not trap characters entered into system fields. Miscellaneous changes --------------------- Allow keyboard input to be directed to windows created outside sp2 Set SP2DEC=8 to skip to next field after all decimals entered Problem with common dialog box timeout 4.1.67 ------ Miscellaneous changes --------------------- Non radio buttons allowed in auto-select groups Set Program data x"10" switch for all group fields if using above feature otherwise generated copy file will be wrong Group Tab within = "a" means allow tab or arrow keys to move within group Make sure mnemonics are always underlined properly Mnemonics for static text ------------------------- Set panel Options-4 x"04" bit to switch this feature on. For static text items, if "~" is included in the text, the following character will be underlined, indicating that this character is a mnemonic. For fields, the editor will allow the Mnemonic property to be manually set for all fields apart from push buttons, radio boxes and check boxes (for which it's set automatically.) Use an upper-case letter for the mnemonic - normally this should correspond to the mnemonic in the preceding static text. If this property is set, the appropriate alt+letter key may be used to switch focus to this field. 4.1.66 ------ Miscellaneous changes --------------------- Editor not always recalculating Item length for icon fields Problem with field focus when using compiler debugger Menu not being reset properly after clear-menu in windows with status bar 4.1.65 ------ Miscellaneous changes --------------------- Reference Item length for all icon field types Problem with timeout for system dialog boxes 4.1.64 ------ Miscellaneous changes --------------------- Stop sp2thred eating up cpu time during delays between sp2 calls 4.1.63 ------ Miscellaneous changes --------------------- Keep multiline custom data intact during scrolling Clean up panel file free space pointers 4.1.60 ------ XP-style toolbar icons ---------------------- Windowed icons with Border=d will be displayed with an XP-style rounded border when running under XP with XP-style buttons. For best results, set the Color of the icon to a transparent background - pre-defined color 10 can be used for this purpose. Miscellaneous changes --------------------- Change in 4.1.56 causing next-fld-id not to be set for activex icons Stop alt control key causing beep if menu present 4.1.59 ------ Miscellaneous changes --------------------- Avoid horizontal scroll bar when resizing window and scaling active SP2EDT=32 (n+32) allows Current color and windows highlight for system entries Special format=a scales icon image to field size but maintains aspect ratio row-col-sw=8 returns mouse position in last-row, last-col if mouse clicked Panel Options-4 x"02" sets window pos in pixels (window More options x"80") 4.1.58 ------ Miscellaneous changes --------------------- shift-f1 and ctrl-f1 triggering extra help event 2. ICQPRW has been upgraded to use: QPR versions: runtime: 4.1.72 editor: 4.1.74 4.1.72 ------ Miscellaneous changes --------------------- Problem with common dialog boxes and TMO configuration variable Possible memory problem with multiple end-print calls 4.1.69 ------ Miscellaneous changes --------------------- Correct no-panel-file generator template to allow for large panels 4.1.68 ------ Print-page Types area --------------------- This area which is included in the generated copy file can be used to dynamically suppress printing of fields at runtime. The area should be initialized to low-values and then the appropriate -T items set to "h". Miscellaneous changes --------------------- Problem with system dialog box timeout 4.1.65 ------ Miscellaneous changes --------------------- Problem with timeout for system dialog boxes during preview 4.1.63 ------ Miscellaneous changes --------------------- Problems with preview find facility 4.1.62 ------ Miscellaneous changes --------------------- Problem with temporary form files during preview 4.1.61 ------ Miscellaneous changes --------------------- Problem with scrolling multi-form pages Escape can now be used as preview menu accelerator key 4.1.60 ------ XP-style toolbar icons ---------------------- Icons on the preview toolbar are now displayed with an XP-style rounded border when running under XP with XP-style buttons. All white pixels are transparent. Miscellaneous changes --------------------- Check boxes appearing too faint Problem dealing with multiple files during multi-form preview 4.1.59 ------ Miscellaneous changes --------------------- Special format=a scales icon image to field size but maintains aspect ratio 4.1.57 ------ Miscellaneous changes --------------------- Problem with set-property if pr-len and pr-var-len-l both zero Changes and New Features in 3.46 -------------------------------- 1. The sp2logon and sp2logono sample programs have been slightly updated to timeout in their mainmenu loop to allow for COBOL to check interrupts. This should generally be done on all input calls. Changes and New Features in 3.45 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 versions: runtime: 4.1.57 4.1.57 ------ Miscellaneous changes --------------------- Problem in editor if Menu rows set and Menu name blank Set field More option x"10" switch to hold multi-scroll position on redisplay Chg-sw always being set for required system entry fields Problem with set-property if pr-len and pr-var-len-l both zero 4.1.56 ------ Miscellaneous changes --------------------- Problem with combobox change stuff Data overflow in editor activex popup if long Value property 4.1.55 ------ Miscellaneous changes --------------------- Track changes to combobox selection and text 4.1.54 ------ Miscellaneous changes --------------------- Problem with repeat group text file display Text help windows must have protected text Changes and New Features in 3.44 -------------------------------- 1. ICQPRW has been upgraded to use: QPR versions: runtime: 4.1.52 editor: 4.1.52 4.1.52 ------ Font rotation ------------- Fonts can be rotated through 360 degrees by setting the font Rotation property to a value in degrees. In the editor, set this value using the Font change dialogbox. A rotated font will be aligned within a field or static as follows: 0-90 bottom left 91-180 bottom right 181-270 top right 271-360 top left Do not use rotated fonts with input, multi-line or justified fields. 4.1.50 ------ Miscellaneous changes --------------------- Problem with multi-form pages left over from 4.1.43 4.1.49 ------ Miscellaneous changes --------------------- Problem with printing activex controls 4.1.48 ------ Miscellaneous changes --------------------- If timeout is set interrupt menu processing if necessary 4.1.47 ------ Miscellaneous changes --------------------- Problem if set-ocx call done before get-ocx 4.1.46 ------ Miscellaneous changes --------------------- Automatic get all pages causing improper timeout 4.1.43 ------ Miscellaneous changes --------------------- Problem with multi-form page preview when there are a lot of pages 2. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: UNIX srv: 4.1.14 ThinClient Changes Log 4.1.14 ------ 4.1.13 ------ 4.1.12 ------ 4.1.11 ------ 4.1.10 ------ 4.1.8 ----- Problem with on demand version control on unix 4.1.7 ----- 4.1.6 ----- 4.1.5 ----- Monitor file support on UNIX Stop end-session call crashing after error returned MonitorFileName --------------- The name of a file where current connections are listed. Do not attempt to modify this file. Each line in the file is formatted as follows: process id for 10 client ip for 16 start date for 10 start time for 10 last activity date for 10 last activity time for 10 last activity type for 4 (b=begin s=send r=recv e=end) File may be "cleaned up" by making a CLEAR-MONITOR (value 136) call as the first SP2 call of a program. Example: [ServerConfig] MonitorFileName=\mydir\mymon.txt 4.1.4 ----- Problem with large converse-data areas Problem with compressing converse-data area after key=switch 4.1.3 ----- 3. ICSP2 has been upgraded to use: SP2 versions: runtime: 4.1.53 editor: 4.1.53 4.1.53 ------ Miscellaneous changes --------------------- window switch to display-only pushbutton not working properly problem with new child window focus stuff 4.1.52 ------ Miscellaneous changes --------------------- font rotation (0 - 360 degrees counter clockwise) problems with child window focus unix sp2check problem 4.1.51 ------ Miscellaneous changes --------------------- Switch focus to correct field after child window switch 4.1.49 ------ Miscellaneous changes --------------------- Support get-property for long list/combobox data Increase max menu levels to 20 Fix problem with Force control field processing 4.1.48 ------ Miscellaneous changes --------------------- If timeout is set interrupt menu processing if necessary 4.1.47 ------ Miscellaneous changes --------------------- Set SP2KBF=2 to support keyboard buffering for system fields as well as customs Click on system field within child window not switching properly 4.1.45 ------ Miscellaneous changes --------------------- SP2CCO=# sets global Current field color (# is numeric color code) Expand internal execute-program buffer to 512 Problem with cursor positioning within field when repeat Cursor movement = -2 4.1.44 ------ Miscellaneous changes --------------------- Make sure next-fld-id is set properly on key-switch Changes and New Features in 3.43 -------------------------------- None. Changes and New Features in 3.42 -------------------------------- None. Changes and New Features in 3.41 -------------------------------- None. Changes and New Features in 3.40 -------------------------------- 1. ICQPRW has been upgraded to use: QPR versions: runtime: 4.1.42 editor: 4.1.42 4.1.42 ------ Miscellaneous changes --------------------- Problem with preview find 4.1.40 ------ Miscellaneous changes --------------------- Support hidden fields using set-property or set-field-def Stop form title overwriting title in QPRPVT file unless "N/A" QPRTMO configuration variable ----------------------------- Set to inactivity timeout in minutes. Print preview will time out after this time returning -1 in form-key or np-ret-code. 4.1.38 ------ Miscellaneous changes --------------------- QPRFON x8 switch - current font picking up spacing from previous 4.1.37 ------ Miscellaneous changes --------------------- Problem with automatic get all pages when using multi-form pages Increase page limit for dynamic preview Use ^ character prior to window title in QPRPVT file to specify non-owned Problem with editor frames 4.1.36 ------ Miscellaneous changes --------------------- Activex support causing problem in end-print 4.1.29 ------ Activex support --------------- Correct problem with activex controls if maint-mode set-ocx used to modify control. Must set qpr-preview=d or QPRPVW=5 if using print preview. Range dialogbox --------------- The text on the range dialogbox can be modified by including: 913myrange.pan in your qprpvt file where myrange.pan is the name of a file containing a modified version of the dialogbox. Create myrange.pan by making a copy of the file range.pan and using the regular qprw editor to modify the text on panel $prange within this file. myrange.pan must be included when you distribute your application. 4.1.26 ------ Miscellaneous changes --------------------- Support printing of activex controls if qprocx32.dll present (copy of sp2ocx32.dll) Correct problems with Print sample 4.1.22 ------ Miscellaneous changes --------------------- Problem with previewing multi-form pages 2. ICSP2 has been upgraded to use: SP2 versions: runtime: 4.1.42 editor: 4.1.42 4.1.42 ------ Miscellaneous changes --------------------- Hold horizontal position when clicking in repeat group with sbar-sw=r Window max increased to 100 Updated .hlp 4.1.41 ------ Miscellaneous changes --------------------- Hide thin 3d borders correctly Force control field processing does not apply if select key used Current field color not displayed properly in justified system entry fields Set SP2TBF=1 to stop toolbars accessing converse-data fields, types, colors Correct problem with pasting into special format system entry fields Color columns for repeat groups with vertical gap = 0 and cell height = 1 4.1.40 ------ Miscellaneous changes --------------------- Problem with set-property and long combobox/listbox data Force common dialogboxes to timeout if SP2TMO set Spacebar means select in all non-entry fields Allow long values to be set for ocx controls in editor Maximum length only needs to be set for entry fields 4.1.39 ------ Miscellaneous changes --------------------- Problem with set-property long for comboboxes and listboxes Combobox Dropdown ----------------- Set field More-options x"08" switch and control will be returned to the program when a combobox dropdown is about to be displayed. This allows you to reset the contents of the dropdown or display another window instead of the regular dropdown. Key-vbx is returned and menu-option is set to "ComboDropDown". See sample program comboret for details. 4.1.38 ------ Miscellaneous changes --------------------- Use sp2-fd-id=-1 with sp2-get-field-def to get id of field just added 4.1.37 ------ Miscellaneous changes --------------------- Problem with group fields in editor 4.1.36 ------ Miscellaneous changes --------------------- Problem with editor frames 4.1.35 ------ Miscellaneous changes --------------------- Adjust listbox thin 3d borders Problem with scaling fonts Correct sp2nofil.cbx to work with panels > 32k 4.1.34 ------ Miscellaneous changes --------------------- Return for timeout must override internal edits 4.1.33 ------ Miscellaneous changes --------------------- Stop scrollbars being displayed on dialogboxes 4.1.32 ------ Miscellaneous changes --------------------- Set font pitch correctly after font has been changed in editor Make sure specified font rather than default font is used if it's not too big 4.1.31 ------ Miscellaneous changes --------------------- SP2DBG=4 - log file open attempts for jpg files, etc. 4.1.30 ------ Miscellaneous changes --------------------- Undo 4.1.8 change to suppress clipchildren in toolbar parent Make sure dynamically built menu is displayed properly in toolbar parent In editor, automatically set clipchildren style if activex control added 4.1.29 ------ Miscellaneous changes --------------------- Problem with cursor position after window scroll Control field processing ------------------------ Set panel Options-4 x"01" switch (force control field) to cause a key=-4 to be returned when a control key is hit on a return-on-exit field. Control key will be returned on next converse-panel. Normally, just the control key would be returned in this situation. 4.1.28 ------ Miscellaneous changes --------------------- Problem with returning focus to activex control 4.1.27 ------ Miscellaneous changes --------------------- Problem with long window titles Use SP2RSM=# to specify # of 4k blocks to reserve for dynamic panel expansion Problem with color for multiline entry fields 4.1.26 ------ Miscellaneous changes --------------------- Support for radiobuttons in repeat groups Force messageboxes to timeout if SP2TMO set Suppress set-property redraw if control has not yet been drawn initially Show messagebox before deleting the menu and toolbar associated with a panel SP2VTS=number of logical pixels to vertically scroll a window 4.1.25 ------ Miscellaneous changes --------------------- Input into multiline text field being lost Problem with display-field if no data passed Set Owner-id to -3 to force initial window to the front Problem with toolbars in editor 4.1.23 ------ Miscellaneous changes --------------------- Radiobuttons being selected on window focus change 3. Updated ActiveX, including sp2ocx32.dll to 4.1.11. See the updated ActiveX documentation below. 4. New SP2 and FormPrint manuals (4.10). Changes and New Features in 3.36 -------------------------------- None. Changes and New Features in 3.35 -------------------------------- None. Changes and New Features in 3.34 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 versions: runtime: 4.1.20 editor: 4.1.20 4.1.20 ------ Miscellaneous changes --------------------- Problem with tab key in editor property box 4.1.19 ------ Miscellaneous changes --------------------- Problem with SP2DBG=4 Problem with popup windows off activex controls Size combobox dropdown if More-options x"01" bit set 4.1.18 ------ Miscellaneous changes --------------------- Problem with cursor positioning in repeat groups 4.1.17 ------ Miscellaneous changes --------------------- Repeat group horizontally shifting in error Deactivate-window (null-parm) function moves current window to end of stack Editor copy function problem with repeat groups Exclude field from repeat if already allocated to another repeat Ignore set-property redraw flag if window not yet drawn 4.1.16 ------ Miscellaneous changes --------------------- Panel program count property not being maintained properly 4.1.14 ------ Miscellaneous changes --------------------- Problem with clear-window function 4.1.12 ------ Miscellaneous changes --------------------- Field number and tab number not always generated properly Long property data code causing problem with zero length data Problem with cursor position in justified, signed and numeric fields 4.1.11 ------ Miscellaneous changes --------------------- Panel Help property being corrupted by editor Problem with large groups in editor Default pushbutton not being reset Problem with changing system field to custom in editor Allow color change ------------------ Set this switch in field More options if you need to programmatically change the color of a system field Long property data ------------------ The set-property function now allows you to assign greater than 32k of data to the Value property for certain field types. Currently this is supported for listboxes and comboboxes. Set pr-len to zero, set pr-var-len-l to the length of the data and move the data to pr-value-l. See the combo3 sample program for an example of this. 4.1.9 ----- Miscellaneous changes --------------------- Problem with focus after closing last window if Owner id set to -2 Problem with changing properties after set-record 4.1.8 ----- Miscellaneous changes --------------------- Suppress Clipchildren on toolbar parent - may cause menu problem Attempt to make whole field visible after window scrolling Key-scroll-click returned in menu-id for key-ctrl-field after scrollbar click 4.1.7 ----- Miscellaneous changes --------------------- Problem with repaint after scrolling when scaling active 4.1.6 ----- Miscellaneous changes --------------------- Problem with cursor row after key-more processing Special character fill in not always working 4.1.5 ----- Miscellaneous changes --------------------- Problem with redrawing icon focus rectangle Fields in repeat not being highlighted properly Fill in special character in system entry if necessary Repaint problem resulting from 4.0.131 group color change 4.1.4 ----- Initial 4.1 release ------------------- See readdoc for overview 4.0.138 ------- Miscellaneous changes --------------------- Extended repeats not working in conjunction with wd-sbar-sw=r 4.0.137 ------- Miscellaneous changes --------------------- Support SP2CEN in system fields 4.0.136 ------- Miscellaneous changes --------------------- Problem with $INS statusbar variable Support for system entry fields in horizontally scrolling repeats sp2thred.dll identified properly in Properties/Version/Description 4.0.135 ------- Statusbar usage --------------- A window has a statusbar if panel Options-3 x"04" switch is set. The format of this statusbar is controlled by setting panel Message length to -1 or -2 and panel Message text to a valid format, such as: /200/y/hello/-1/y/from my program/ This would display "hello" in the first part of the statusbar (for a length of 20 cells) and "from my program" in the remaining part. The first part can be easily changed at runtime by resetting panel Message text to the new text to be displayed - the format details are not required unless the format needs to be changed - and setting panel Message refresh switch to zero (use the set-property function to do this). It is also possible to embed special text in the statusbar using the variables $CAP, $NUM, $INS, $DAT and $TIM - use these in the statusbar format instead of a text string, for example: /200/y/hello/100/y/$DAT/ $CAP displays "CAP" if Caps Lock is on $NUM displays "NUM" if Num Lock is on $INS displays "INS" if in insert mode or "OVR" if in overwrite mode $DAT displays the current date $TIM displays the current time Dollar variables should be included on only one window in your system (the main window) but the display will be updated even if this main window is not active. Right click on system field --------------------------- Set field More-options property to x"02" and control will be returned when user right clicks on a system field, if Mouse switch is "r" or "o". If the system field is a listbox, the item which was clicked can be retrieved by setting fd-more-options to x"02" and then making a get-field-data call for the listbox. Miscellaneous changes --------------------- Display-only system entry fields not being drawn properly in XP Problem with listview set call ms-line-cnt=1 assumed if passed as zero on display-message call 4.0.134 ------- Border=L for system/custom entry fields --------------------------------------- This setting gives a basic 2d line border. This can be used in conjunction with a repeat group to easily create a flat grid. Also set panel Cell width/height to 1/1, repeat Vertical/Horizontal gap to -1, repeat Cursor movement to -2, repeat Tabbing type to a or v, and make sure that height of field is a specific number (i.e. not zero). Miscellaneous changes --------------------- Usage option=a for activex icon means pass all keyboard input to control Problem with thread scrolling in thin client Problem with Cursor movement=-2 for a repeat if it has horizontal occurs Problem with new Value processing for activex controls OCXLIST listbox includes all insertable servers Problem with current color for system entry fields in XP 4.0.133 ------- Miscellaneous changes --------------------- Check height of properties window after resizing 4.0.132 ------- Miscellaneous changes --------------------- Generate set-record stuff for panels >32k Problem with length of initial Value for activex icons greater than 500 Save not always done after activex property changed Protect readonly activex properties 4.0.131 ------- Miscellaneous changes --------------------- Editor window size/position saved for next session Generator template saved for next session, so that it's easier to have multiple templates for different purposes. Supplied templates are: sp2.cbx - generate default panel copy file and test program, sp2nofil.cbx - generate as above plus working-storage panel definition so no panel file is necessary at runtime Support group Current color for system field as long as field has a color Make sure keyboard input is directed to appropriate field SP2EDT=16 --------- Set this option (or n+16) to cause system entry fields to highlight and select their contents when you click in them (as if you used tab to move to the field). 4.0.130 ------- Miscellaneous changes --------------------- Clear current selection in combobox if new selection invalid 4.0.129 ------- New configuration variable - SP2NLK ----------------------------------- Set to 1 to override fi-share=y at runtime (i.e. equivalent to setting fi-share=low-value on open-file call). Set to 2 to allow read-only access to panel file even if another process (eg. editor) has file open for update. This allows updating of file during 24/7 runtime use with only slight performance penalty. Miscellaneous changes --------------------- Problem with small stock font Fix set-record function in unix Gtr/less than comparisons in generator not working properly SP2DBY=1 - ~ character not treated as mnemonic indicator if prev char >= 128 Support for returning activex error codes (see activex doc) 4.0.128 ------- Miscellaneous changes --------------------- Window resize problem after minimize/maximize Allow up to 500 menus in editor Stop accidental property setting after scrolling option list 4.0.125 ------- Miscellaneous changes --------------------- Problem with thread scrolling and toolbars 4.0.124 ------- Miscellaneous changes --------------------- Problems changing font in editor 4.0.110 ------- Miscellaneous changes --------------------- Allow pasting into special format system fields 4.0.109 ------- Miscellaneous changes --------------------- Options-3 x"40" bit means sunken border for window beneath toolbar 4.0.106 ------- Miscellaneous changes --------------------- Suppress Current color for comboboxes 4.0.103 ------- Miscellaneous changes --------------------- Set margin to zero in system entry fields 4.0.100 ------- Miscellaneous changes --------------------- Problems with system field bs/del handling 4.0.95 ------ Miscellaneous changes --------------------- Allow menus greater than 32k 4.0.89 ------ Miscellaneous changes --------------------- Calculate repeat group Vertical visible without need for trailing blank row sp2thred.dll not working properly in thin client 2. ICQPRW has been upgraded to use: QPR versions: runtime: 4.1.20 editor: 4.1.20 4.1.20 ------ Miscellaneous changes --------------------- Problem with tab key in editor property box 4.1.18 ------ 4.1.17 ------ Miscellaneous changes --------------------- Editor copy function problem with repeat groups Exclude field from repeat if already allocated to another repeat 4.1.11 ------ Miscellaneous changes --------------------- Problem with large groups in editor 4.1.10 ------ Miscellaneous changes --------------------- Problems with exiting out of automatic get all pages 4.1.9 ----- Miscellaneous changes --------------------- Possible problem with focus after preview window closed 903N/A in qprpvt file means suppress Exit preview messagebox and printing Problem changing properties after set-record 4.1.7 ----- Print preview scaling --------------------- The size of the print preview window (including its contents) can be scaled up to fill more or less the whole screen by setting the configuration variables QPROWD=640, QPROHT=480, and QPROIC=1. This is different from maximizing the preview window as explained in 4.0.66 below because the text, etc. within the window will also become larger. The scaling is slightly different if the QPRFON x7 switch is also set to allow for the increased precision of the x7 feature. Preview accelerator keys ------------------------ See also 4.1.0. Codes 911 and 912 allow keys to be assigned to the scroll left and right functions. For example: 911#331 912#333 causes the left and right arrow keys to be used for this. Form records in working-storage ------------------------------- Forms can now be stored in working-storage eliminating the need for panel files at runtime. The main disadvantage of this technique is that your programs will be bigger and performance may be degraded in thin client mode - records will be transmitted each time they are used rather than on a one-time basis. The working-storage definitions can be generated along with the regular cobol code using a new version of the code generator - use the template file qprnofil.cbx rather than uib.cbx if you want to do this. A new maintenance function, qpr-set-record, allows a record to be moved to qpr memory so that it can be accessed by print-page logic as if it had just been read from a panel file - see code produced from qprnofil.cbx for an example of this. Individual set-record calls must be made for each form used. get/set-property functions -------------------------- Set individual properties avoiding the need for get/set-object-def maintenance functions. Maintenance copy files have been updated to use the set-property function. See chgbmp.cbl/qprbmp.cpy for an example. Usage: call "QPR" using qpr-get-property qpr-property call "QPR" using qpr-set-property qpr-property Where: pr-id = id of object (static, field, group, repeat) pr-row = row of static pr-col = column of static pr-key = key of property (made up of pr-object-type thru pr-var-act below) pr-object-type = type of object (W, P, S, F, G, R) pr-type = type of property (L=length, N=numeric, C=character, V=variable) pr-var-type = type of variable property (A=first, B=second, ...) pr-off = offset of property within object type pr-len = length of property pr-format = format (in pr-value) of property (N=number, B=binary, D=decimal) pr-action = action to be taken if setting property (R=redraw, C=recreate) pr-var-act = action to be taken if variable property (L=reset variable length) pr-value = value of property pr-num-value = value of property if format is N or D - pic 9(5) pr-bin-value = value of property if format is B pr-bit-value = value of property bit (0 or 1 - anything else means leave alone) length properties are read-only format=N assumes a 2 byte numeric property format=B/D assumes a 1 byte property Some common property keys: Static font: SN-0001000002NC- Static text: SVA0000000080-RL (set length as appropriate) Field row: FN-0001000002NC- Field col: FN-0001200002NC- Field width: FN-0002200002NR- Field height: FN-0002400002NR- Field font: FN-0004200002NC- Field color: FC-0007000001DR- Field format: FVA0000000010-RL (set length as appropriate) Field caption: FVB0000000080-RL (set length as appropriate) Field value: FVC0000000080-RL (set length as appropriate) 4.1.6 ----- Preview print menu option ------------------------- See also 4.1.4. If print menu option is chosen but qpr-dialog not "a" on select-printer-ex call, a custom dialogbox will be presented to get range of pages to be printed. 4.1.5 ----- QPRFON x8 switch ---------------- See also 4.1.3. This option now applies to print output as well as screen output. By adding pixels to selected characters, printer output can be more consistent across different printers, resolutions and operating systems. 4.1.4 ----- Preview print menu option ------------------------- The Print menu option (id=024) allows the user to print off pages reviewed so far and then return to previewing. If qpr-dialog=a on set-printer call, the print dialogbox will be displayed. If qpr-range=y, the user will be able to select a range of pages to print. Selecting this option does not effect the option to print all pages when the user exits preview. 4.1.3 ----- QPRFON x8 switch ---------------- Set QPRFON=00000011 to add extra pixels to selected screen characters so that screen output matches print output more closely. x7 switch must also be set. Miscellaneous changes --------------------- New x7 logic will reduce font height if necessary to get better width match 4.1.2 ----- Miscellaneous changes --------------------- Editor window size/position saved for next session Generator template saved for next session 4.1.0 ----- Preview accelerator keys ------------------------ The keys used to control print preview can now be configured by adding numeric key codes to the QPRPVT file. For example: 041~Next page PgDn#337 042~Previous page PgUp#329 043~First page ^PgUp#388 044~Last page ^PgDn#374 909#328 910#336 The last two entries (909 and 910) are for window scrollup/dn). QPRFON x7 switch ---------------- Set QPRFON=0000001 to turn on new font processing which attempts to minimize variations in a font across printers and operating systems. It does this by selecting fonts so that a certain string of characters fits exactly in an area delimited by the font Width multiplied by the number of characters in the string. The string defaults to the 17 characters "abcdeghknopqsuxyz" but can be reset using the configuration variable QPRSTR. Extra pixels will be added to each character if necessary to match the target width. 4.0.124 ------- Cell height increment --------------------- Set the panel Cell height increment property for more finer control of vertical print output. For example, if you want to achieve exactly 10 lines per inch, set Cell height to 9 and Cell height increment to 60. This will give you 96 / 9.60 = 10 lpi when you print. Cell height increment has no effect on screen output. 4.0.89 ------ Miscellaneous changes --------------------- Support for qpr-library=s in thin client 4.0.88 ------ Miscellaneous changes --------------------- Problem with clicking on rulers in editor 4.0.83 ------ Miscellaneous changes --------------------- Exclude trailing blanks from config variable values 4.0.81 ------ Miscellaneous changes --------------------- Log all attempts at file create/open if QPRDBG=4 (For more on QPRDBG see the SP2DBG info in the readme and the manual) 3. ThinClient (gui) has been upgraded to the following levels: ThinClient (gui) versions: client: 4.1.0 NT srv: 4.1.0 UNIX srv: 4.1.2 Changes: 4.1.2 ----- 4.1.1 ----- Server rejecting some connections if high number received simultaneously Problem with qpr return code 4.1.0 ----- qpr ondemand logic closing server sp2 file 4.0.57 ------ Problem with toolbars 4.0.56 ------ Problem with passing program Colors/Types area with dynamic panels 4.0.55 ------ ENH encryption option Problem with passing program Fields area with dynamic panels 4.0.54 ------ Problem with toolbars in client AES encryption option 4.0.52 ------ Handle byte swapping for comp-5's in ocx parm types 4.0.50 ------ Unnecessary data being sent back to server Allocate sufficent memory in server library to allow for http headers Error in client http decoding if large datastream 4.0.49 ------ Multiple directories in SourceDir= 4.0.48 ------ GetClientWindowDef=TRUE causes get-window-def to always go to client Problem with returning a parameter greater than 32k 4.0.47 ------ set-vbx calls not being buffered properly causing poor listview performance 4.0.46 ------ Support for parameters greater then 32k 4.0.44 ------ SourceDir= is default source directory for auto version control 4.0.43 ------ initial receive times out after 10 seconds problem with client extended repeat processing 4.0.42 ------ ondemand sharing error on qpr-init call 4.0.41 ------ bad connections causing initial receive to hang Changes and New Features in 3.33 -------------------------------- None. Changes and New Features in 3.32 -------------------------------- 1. The sample program sp2logon.sr has been updated. A new sample of sp2logon that DOES NOT use the .pan file at runtime is provided as sp2logno.sr. 2. Updated sp2ocx32.dll to version 4.0.6 (Used with ActiveX) 3. Updated ActiveX documentation below. Added agent.zip and lvocx.zip samples in sp2\examples. 4. A new sample program sp2globe.cbl is now provided that is a COBOL program that prompts for a .pan file and displays all the panels and fields in the file. It can be used as a starting point to allow mass changes to a .pan file just as sp2glob.cbl. Changes and New Features in 3.31 -------------------------------- None. Changes and New Features in 3.30 -------------------------------- 1. Changed the discussion of ThinClient to distinguish this version as ThinClient (gui). Changes and New Features in 3.23 -------------------------------- 1. The sp2ima32.dll and qprima32.dll files have been updated to prevent crashes when using JPEG images. Changes and New Features in 3.22 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 versions: runtime: 4.0.88 editor: 4.0.93 4.0.88 ------ Miscellaneous changes --------------------- Field More-options x"01" switch means size listboxes exactly and allow partial item display Get rid of erroneous messagebox in sp2check.exe Hidden windowed icons still being displayed Problem with thread scrolling 4.0.87 ------ Miscellaneous changes --------------------- Problem deleting repeats 4.0.86 ------ Miscellaneous changes --------------------- Up/Down arrow keys move out of group if Cursor movement is "v" rgb values not being displayed correctly in editor 4.0.85 ------ Miscellaneous changes --------------------- Adjust new thread logic 4.0.84 ------ Thread scrolling (see 4.0.83) ----------------------------- Only active if repeat Miscellaneous property x"02" bit set May cause sp2-key-more to be returned before sp2-key-switch Panel name returned in panel-next-pan if switch occurs 4.0.83 ------ Repeat group changes -------------------- Scrolling allowed in extended and horizontal repeats even if they do not have focus. Extended repeats may be scrolled past current block with mouse if sp2thred.dll used. In response to sp2-key-more, make only get-repeat-ext and set-repeat-ext calls before continuing with get-input or converse-panel - other calls will be ignored in sp2thred mode. Menu-id holds id of repeat group when sp2-key-more returned. Correct problem with hidden fields in repeats. Additionally, if sp2thred is used and repeat Miscellaneous x"02" set: - extended repeats may be scrolled past current block with mouse - in response to sp2-key-more, make only get-repeat-ext and set-repeat-ext calls before continuing with get-input or converse-panel - other calls will be ignored - may cause sp2-key-more to be returned before sp2-key-switch - panel name returned in next-pan if switch occurs Miscellaneous changes --------------------- wd-sbar-sw=x causes scrollbars to be redrawn Problem with easy-key when defining a menu Stop scrollbars appearing in editor toolbar window Exclude trailing blanks from config variable values Improve font scaling by rechecking size of original font used 4.0.82 ------ Miscellaneous changes --------------------- Output 3 digits for func in SP2DBG file ctrl/shift f10 distinguished from f10 Properties box caption overwritten by key translation logic Problem with radiobutton colors Prevent mouse interaction with display-only combobox 4.0.81 ------ Panel file records in working-storage ------------------------------------- Panel file records can now be stored in working-storage eliminating the need for panel files at runtime. The main disadvantage of this technique is that your programs will be bigger and performance may be degraded in thin client mode - records will be transmitted each time they are used rather than on a one-time basis. The working-storage definitions can be generated along with the regular cobol code using a new version of the code generator - use the template file sp2nofil.cbx rather than sp2.cbx if you want to do this. A new function, sp2-set-record, allows the records to be moved to sp2 memory so that they can be accessed by converse-panel/open-window logic as if they had just been read from a panel file - see code produced from sp2nofil.cbx for an example of this. Individual set-record calls must be made for each panel, toolbar and menu being used. A set-record call should normally be made immediately prior to a record being used - all records are cleared from memory when a CLOSE-WINDOW or CLEAR-WINDOW call is made. Display-only field color change ------------------------------- As of version 4.0.74, system entry fields with their Protection property set to "y" (display-only) or "p" (protected) are displayed with a grey background rather than the normal white background. To avoid this behavior, set SP2EDT=8 (or n+8 where n is 1 thru 6 representing other behavior preferences eg. SP2EDT=9). Miscellaneous changes --------------------- XP focus indicator still not working in all cases Numeric check not working for pic 9 characters in special format Log all attempts at file create/open if SP2DBG=4 2. ThinClient (gui) has been upgraded to the 4.0.38 level. Changes: 4.0.38 ------ ondemand code causing regular version control to fail in special circumstances 4.0.37 ------ dynamic encryption key - see below under [Encryption] section 4.0.36 ------ problem with client messageboxes under XP qpr ondemand being invoked after printer selection error 4.0.35 ------ problem with set-record support qpr ondemand stuff being done even if ondemand not set 4.0.34 ------ set-record support 4.0.33 ------ Problem with server ondemand code 4.0.32 ------ Client as ActiveX control Use all winsock2 stuff Changes and New Features in 3.21 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 versions: runtime: 4.0.80 editor: 4.0.80 Changes: A. SP2TMO configuration variable: Set to inactivity timeout in minutes. Equivalent to setting Wait-sw=a except that this applies to all windows and units are minutes rather than seconds. B. Problem with dollars in cobol format C. Problem with XP focus indicator D. Allow color for radiobuttons and checkboxes E. Hide-sw=i/a not working if SP2HID set F. New SP2DBG setting: Set SP2DBG=4 and an SP2DBG=2 trace file will be generated including the full path names of dll's, panel files and auxilliary files used. If you do not know which configuration file is being used, code the following as the first thing in your program: move "SP2DBG=4" to sp2-bf-data call "SP2" using sp2-set-configuration sp2-buffer G. Help keyword extensions: Prefix the keyword text with a "!" and it will be interpreted as an application to run eg. !winhlp32 -P -Icontext-string help-file. Prefix the keyword text with an "@" and it will be interpreted as a macro to run eg. @JumpId(`help-file',`context-string') H. Problem with date field input I. Watch propertybox table overflow J. Window scrollbars being displayed unnecessarily K. Stop frame divider bleeding outside window L. Calculate height for multiline static if height is zero M. Tab change causing window to flash N. Problem with national character case conversion O. Protection=secure takes precedence over Usage=multiline P. Force repaint if field size is changed and Miscellaneous x"04" bit set Q. exe/dll version numbers can be viewed through Windows file properties R. XP manifest included in executables 2. ICQPRW has been upgraded to use: QPR versions: runtime: 4.0.80 editor: 4.0.80 Changes: A. Form-key values returned from preview: 0 = Preview continued -17 = Cancel -18 = Exit without printing -24 = Exit with printing (new) B. Copies: On return from selecting the printer, qpr-copies will be set to the number of copies to be generated by the printer, unless qpr-allow-copies is set, in which case qpr-copies will be set to the number of copies to be generated by the program. C. Incorrect width/height returned if qpr-dialog=y D. Hardware margins in 1/1000" returned by select-printer-ex (see qpr.cpy) E. Printer DPI returned by select-printer-ex (see qpr.cpy) F. Long printer names being truncated G. Calculate height for multiline static if height is zero H. exe/dll version numbers can be viewed through Windows file properties I. XP manifest included in executables Changes and New Features in 3.20 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 versions: runtime: 4.0.75 editor: 4.0.75 Changes: A. Problem displaying statics B. Window More options x"04" causes child to resize - not parent as per manual C. Problems with repeat group scrolling D. Multi-select listboxes: See O.(below) - to select all, set selection-1 to low-values and selection-2 to high-values - to clear all selections, set selection-1 to high-values and selection-2 to low-values E. F10 can be used as a control key if SP2F10=1 F. Case property supported for comboboxes G. Set default icon file name if create-file used instead of open-file H. Problem with END-SESSION and sp2thred.dll I. Problem with menu display in WinXP J. Window border type=f means floating toolbar (skinny titlebar) K. Preserve id of menu separator in editor L. Icon field changes: 1. Background color (all pixels matching top left pixel) of icons with Border=dynamic will be reset to match field/panel Color property if set - previously background color was always set to the system 3d color. 2. If field/panel Color property is set to a color with background=transparent, icon will be transparent for all white pixels in the bitmap - no support for jpeg images yet. 3. Field Miscellaneous property x"80" bit (Dynamic icon mods) - for icons with Border=dynamic, no border will be drawn (other behavior will be unchanged); for other icons, background color will be reset as if Border=dynamic (other behavior will be unchanged). M. Set SP2FON=000001 to recheck font not too big after scaling N. Problem with SP2END=4 O. Multi-select listboxes To select programatically: move low-values to sp2-fd-var-lens compute sp2-fd-initial-len = sp2-fd-item-len * number-of-selections move low-values to sp2-fd-data move field-id to sp2-fd-id move 1 to ws-sub move selection-1 to sp2-fd-var-data (ws-sub : sp2-fd-item-len) add sp2-fd-item-len to ws-sub move selection-2 to sp2-fd-var-data (ws-sub : sp2-fd-item-len) .... call "SP2" using sp2-display-field sp2-field-def P. Support dynamic download of cursor and icon files Q. System shutdown: If system shutdown is requested and an sp2 application is running, the default action is to display a messagebox requesting that the user exit the sp2 application (the text of this messagebox is customizable using the SP2MSG config variable). This behavior can be altered as follows: if SP2END=1, the messagebox will not be displayed and the application will be terminated; if SP2END=2, -22 will be returned in panel-key and the next call to SP2 will terminate the application. NOTE: SP2END=2 is only supported if sp2thred.dll is used instead of sp2.dll. If sp2thred.dll is used and SP2END is not set to 2, the default action is to terminate the application immediately i.e., the messagebox option is not supported if sp2thred.dll is used. Application close ----------------- If close is requested for the taskbar icon related to an sp2 application and the main window is not the current window and switch-sw is not set, the default action is to ignore the close request. If SP2END is set to 4 (0 + 4), 5 (1 + 4) or 6 (2 + 4), -23 will be returned in panel-key. R. Problem with END-SESSION logic if sp2thred.dll used S. Problems with focus in tabs if SP2TAB=1 or 3 T. Ignore hidden fields when checking if mouse clicked in a field U. Problem with selecting statics in editor treeview V. Allow spacebar as input in unprotected "return if selected" field W. Problem changing protection type of hidden field X. Suppress SP2DBG=3 messages if on demand version control being used Y. Clear area before refreshing icon image from program fields area Z. Watch sp2dbg file overflow AA. Proper line-endings in sp2dbg file AB. Fonts file being unnecessarily loaded at END-SESSION AC. ThinClient (gui) on demand version control 2. ICQPRW has been upgraded to use: QPR versions: runtime: 4.0.75 editor: 4.0.75 Changes: A. Remove errnoneous paper size message from editor B. Accept qpr-device-to-select as default printer to be displayed in dialogbox C. Return error from preview if form doesn't exist D. Escape sequences: To send data directly to the printer (bypassing the device driver) define a static field with the X"02" bit of the Miscellaneous property set or a custom field with the X"40" bit of the Miscellaneous property set and the contents of the field will be sent to the printer. To send special characters, insert a backslash (\) followed by the hexadecimal value of the character. For example, the sequence: \1b&a10C\1b&a20Rhello\0d\0a causes "hello" to be printed in the default font at column 10, row 20 on an HP printer. E. Problem with selecting statics in editor treeview F. Problem with form positioning in RM G. Maximize preview window if title in QPRPVT file begins with ">" H. Problems with automatic get all pages option 3. ThinClient (gui) has been upgraded to the 4.0.31 level. Changes: A. OnDemand downloads. See below in ThinClient (gui) write-up. Changes and New Features in 3.13 -------------------------------- 1. ICSP2 has been upgraded to use: SP2 versions: runtime: 4.0.65 editor: 4.0.65 Changes: A. Sp2check.exe compression repeat group problem B. Hint text not being extracted properly for multi-image icons C. Repeat2 sample program problems D. Panel names displayed with bad characters in editor panel list E. Multi-image bitmap buttons: If defining a field programatically, you must set Maximum length property to total length of image file names F. Problem with row-col-sw G. Allow up to 200 for window title H. Accept negative in editor to indicate edit override control key I. Multi-image bitmap buttons: See also K. The editor now sets Item length equal to Format length divided by 4. The 4th slot is used to set to specify new icon hint text from within a program. This 4th slot is NOT included in the Value property - default icon hint text is specified using the Message text property. If you do not need to modify the images associated with a bitmap button from your program, set the Program data property to X"02" and set Program length to zero - this will suppress the generation of the program Fields area item for the icon. If the buttons are included in a toolbar and the toolbar is to be associated with different panels, set Program data to X"06" and set both Program length and Program number to zero, otherwise the Converse-data area may be incorrectly accessed. J. Icon hints are now displayed for all icons except greyed-out ones K. Multi-image bitmap buttons: If Field Miscellaneous property X"20" bit is set and Item-length property is set, then the Value property should contain three image specifications (each Item-length long): the default image; the image to be displayed when the mouse is over the button; and the image to be displayed when the button is greyed out. In the editor, Item-length is automatically set based on the Format by dividing the Format length by 3. The second and third images should be entered into Item details separated by a "|" character, for example: icons.bmp 2/20 | icons.bmp 3/20 If defining a field programatically, Item-length must be set manually and Value must be set with respect to this Item-length (without the "|" separator). Field Border must be set to "d" and Usage to "w" to get the "mouseover" effect. L. Problem setting group fields in editor M. Refresh field display if action=R on set-property call N. Problem with empty repeat group O. Mnemonic property supported for icons (uppercase letter or number) P. Problem with entering right-justified dates and specials Q. Problem setting ocx name in editor R. Erroneous scrolling in editor S. Tab sequence icon restored in editor T. Skip to next field option for system entry fields U. Suppress return on select option for system entry fields V. Null out grp/rep-ids as appropriate during edit operations W. Allow backslash as statusbar separator so slash can be used in text X. Detect alt-0 thru 9 keys Y. Clear jpegs from memory properly Z. Use SP2IMA=count to control number of images in memory (max/default 200) AA. Restore tab sequence toolbar icon AB. Clicks outside main windows in editor can cause erroneous scrolling AC. SP2DBG not set or set to 3 traps open-file/open-window/converse-panel errors AD. Multiline edit cr/lf's being overwritten if SP2EDT set AE. Use one owner window for all subsequent owned windows AF. Image reload: Use then following code to force the image for an icon field to be reloaded (i.e. use same file name for a different image): move low-values to sp2-fd-data move ID to sp2-fd-id move "r" to sp2-fd-output call "SP2" using sp2-display-field sp2-field-def AG. Correct refresh for windowed icons AH. Long icon file names: Long file names are now supported for icons. In the editor, set the Format property to x(50), for example, and this will cause the Maximum length, Program length and Item length properties to be set to 50. This will allow for up to 50 bytes for the icon file name. Because the Program length property has been set, an entry will be generated in the program Fields area for the icon and you can use this entry to change the image that is displayed or set the image for individual occurrences in a repeat group. This facility is currently only supported for icon fields with Type property set to x"00" (regular bitmap), x"01" (bitmap exact) and x"02" (bitmap pushbutton). If you need to set a bitmap pushbutton from your program, include the number and width of the image (eg. 1/20) after the file name leaving at least one space. AI. Problem clicking on non-display-only scrollbar in another window AJ. Problem with set-repeat-def AK. Watch properties box list overflow AL. Stop properties box being minimized when main window minimized AM. Allow windowed icon to be overlaid by static to allow pointer change AN. Display statics with leading blanks in tree control AO. Disallow decimal if no decimals in format AP. Problem with special character set fonts AQ. Get/Set-property functions: Set individual properties avoiding the need for get/set-object-def functions. See combo2 for an example. Usage: call "SP2" using sp2-get-property sp2-property call "SP2" using sp2-set-property sp2-property Where: pr-id = id of object (window, panel, static, field, group, repeat) pr-row = row of static pr-col = column of static pr-key = key of property (made up of pr-object-type thru pr-var-act below) pr-object-type = type of object (W, P, S, F, G, R) pr-type = type of property (L=length, N=numeric, C=character, V=variable) pr-var-type = type of variable property (A=first, B=second, ...) pr-off = offset of property within object type pr-len = length of property pr-format = format (in pr-value) of property (N=number, B=binary, D=decimal) pr-action = action to be taken if setting property (R=redraw, C=recreate) pr-var-act = action to be taken if variable property (L=reset variable length) pr-value = value of property pr-num-value = value of property if format is N or D - pic 9(5) pr-bin-value = value of property if format is B pr-bit-value = value of property bit (0 or 1 - anything else means leave alone) length properties are read-only format=N assumes a 2 byte numeric property format=B/D assumes a 1 byte property Some common property keys: Window title: WVA0000000080-RL (set length as appropriate) Panel tab key: PVC0000800002N-- Panel ctrl keys: PVD0000000040N-L (set length as appropriate) Static font: SN-0001000002NC- Static text: SVA0000000080-RL (set length as appropriate) Field row: FN-0001000002NC- Field col: FN-0001200002NC- Field width: FN-0002200002NR- Field height: FN-0002400002NR- Field font: FN-0004200002NC- Field color: FC-0007000001DR- Field format: FVA0000000010-RL (set length as appropriate) Field caption: FVB0000000080-RL (set length as appropriate) Field value: FVC0000000080-RL (set length as appropriate) AR. Delete-font, delete-color functions AS. Problem changing total width/height properties AT. Changes to menu/toolbar properties not being saved AU. Problem with clear-panel AV. Problem with RM ocx parameter handling AW. Error in RM extended repeat code AX. Set SP2FON=1 to force x.5 compatible font selection AY. Problem with message lines if scaling AZ. Problem with groups in align operation BA. Stop jpegs being reloaded every time BB. Display error if sp2.pan not found in sp2gen.exe 2. ICQPRW has been upgraded to use: QPR versions: runtime: 4.0.65 editor: 4.0.65 Changes: A. Problem with scrolling in editor B. Preview menu options: To suppress a menu option (and the corresponding toolbar icon) in print preview, set the text for the menu option to "N/A" in the QPRPVT file. If the option suppressed is 21 ("Get all pages"), all pages will be automatically retrieved but the user will be allowed to interact with pages retrieved so far as other pages are being retrieved. C. Problems with scrolling in preview D. Suppress cursor in preview E. Suppress display of page border in preview F. Erroneous scrolling in editor G. Null out grp/rep-ids as appropriate during edit operations H. Clicks outside main windows in editor can cause erroneous scrolling I. Problem with help in network version J. Long icon file names: Long file names are now supported for icons. In the editor, set the Format property to x(50), for example, and this will cause the Maximum length and Program length properties to be set to 50. This will allow for up to 50 bytes for the icon file name. Because the Program length property has been set, an entry will be generated in the program Fields area for the icon and you can use this entry to change the image that is printed or set the image for individual occurrences in a repeat group. K. Problem with transparent background L. Stop properties box being minimized when main window minimized M. Display statics with leading blanks in tree control N. Problem with special character set fonts O. Problem with multiform page preview P. Print dialogbox: If QPR-DIALOG is set to "a" on a select-printer or select-printer-ex call prior to a print preview session, the print dialogbox will not be displayed till after the preview session has been exited and pages are to be actually printed. This is particularly useful in connection with the new Range facility (see below). If printing is to be done without preview, "a" means the same as "y" - standard dialogbox display. Q. Print range: If QPR-RANGE is set to "y" on a select-printer-ex call, the user will be able to select a range of pages to be printed. Set QPR-RANGE-FROM to the lowest page number that can be entered - normally 1. Set QPR- RANGE-TO to the highest page number that can be entered - this must be estimated if the exact number of pages is not known. These two numbers will be updated to reflect the numbers actually chosen by the user. QPR-RANGE will be reset to low-value if the user chooses to print all pages. The print-page function will check to see if the current page is within the range selected and suppress output if not. If the current page is past the selected range, -21 will be returned in form-KEY to indicate that the remainder of the report need not be generated and end-print may be called immediately. R. Problem changing total width/height properties S. Font change dialogbox: A custom dialogbox is now used to change a font definition rather than the standard Windows dialogbox. This new dialogbox displays existing font details and allows Width increment to be set (see below).. T. Font width increment: Allows finer control of printer font width. This is important because printers typically have a much higher resolution (more dots per inch) than video devices. In FormPrint, screen dpi is fixed at 96 pixels. If you want 16 characters per inch, that's fine because you can use a font of 6 (96 / 16 = 6). However, if you want 17 cpi, that's a problem because you can't specify a width with pixel fractions (96 / 17 = 5.6) so you would have to use a width of 5 which would actually give you 19 cpi (96 / 5 = 19.2). Font width increment allows you to specify a pixel fraction for the printer even though this increment cannot be rendered on the screen. For 17 cpi, therefore, you could specify a width of 5 and an increment of 60, which would cause a printer font width of 35 dots to be used on a 600 dpi printer (5.60 * 600 / 96 = 35). Enter font width increment on the Change font dialogbox (see above). See also QPRFON x3 configuration setting below. U. QPRFON configuration variable: Helps to control font selection. Set QPRFON=xxxx where x is 0 (off) or 1 (on) as follows: x1 - 1.x compatibility mode (i.e.,QPRFON=1000 would set it ON) x2 - adjust screen font width before selecting font to pick widest font possible and help with consistent font selection (i.e., QPRFON=0100) x3 - insert extra spaces between printed characters to achieve best font match in terms of width. This should be set if you are using a font width increment (as described above). x4 - output details of selected fonts to qpr.log file (i.e., QPRFON=0001) V. Preview find facility: Text find facility now available for searching for a text string during preview. Only pages sent to preview facility will be searched so use "Get all pages" first if whole report is to be searched. Search starts at current page. Menu options, etc. related to find facility can be modified in the QPRPVT file as follows: 003~Edit 061Find... F3 908String not found W. Printable area: If paper-length and paper-width are set to -1 on a select-printer-ex call they will be reset to reflect the printable area on the page (in 1/10 millimeters). Use the formula (x * 96) / 254 to convert either of these values into logical pixels. W. Problem with discrete values in properties box X. More options missing from properties box Y. Stop print preview hanging if no control keys defined Z. Problem with non-rgb colors AA. qpr.cpy missing from distribution AB. Copy qprmaint.cpy into qprbmpws.cpy AC. 2000-byte fields area in qpr-converse-data AD. Adjust newform and gridline to use above AE. Modify chgform to use real form AF. Chgbmp is example of qprbmp usage AG. Stop looping in print preview if bad form 3. ThinClient (gui) support has been added to the UNIX platforms. (4.0.20) The directory tcs is provided on the UNIX releases and it contains the ThinClient (gui) server. The ThinClient server is started via the ICNETD daemon. The ThinClient (gui) server is started in the user's home directory (as provided by the /etc/passwd file) by default. ICRUN and SP2RUN licenses must be available for the ThinClient (gui) server to start. 4. Alternative .dll A new sp2.dll is provided called sp2thred.dll. If sp2thred.dll is copied to sp2.dll, (or sp2cli.dll for the ThinClient (gui) client) the runtime will execute as a separate thread. The main advantage here is that the runtime can respond to window move and repaint requests, etc. while control is within the COBOL program. The mouse pointer will automatically be changed to an hourglass if control is not returned within a certain amount of time. If you decide to use sp2thred.dll you should copy (or rename the old versions to sp2old.dll (or sp2cliold.dll) to preserve them in case problems arise. This .dll will must be redone after an updated install is run. 5. With ICSP2 and ICQPRW, when generating the COBOL main program the extension for the main source has been changed from .cbl to .sr for CRT format and .co for CARD format. This can be changed back to the former extension (.cbl) by editing the uib.cbx file in each of the sp2 and/or qpr subdirectories and changing the extension back. 6. With ThinClient (gui) server, Keepalive is enabled with the UseKeepAlive entry not KeepAlive entry. Changes and New Features in 3.12 -------------------------------- None. Changes and New Features in 3.11 -------------------------------- 1. Sp2tc.cpy did not exist. Its values have now been added to sp2.cpy. Changes and New Features in 3.10 -------------------------------- 1. ThinClient (gui) support has been added for SP2 and FormPrint runtimes. (4.0.20) (Updated for 4.00) ThinClient (gui) allows a COBOL sp2 and/or FormPrint based application to be run on a server and deploy the application's graphical user interface to any Windows client machine connected to the server via a TCP/IP network. The main advantage to this architecture is that the business logic and database files are maintained in a central location yet end-users still have access to the graphical user interface and all its associated conveniences. ThinClient consists of two pieces: ThinClient client and ThinClient server. ThinClient client ----------------- ThinClient client resides on the client machine (actually where the GUI and keyboard are located). The sp2 and/or qpr runtime is actually running on this machine. In the Windows install, a ThinClient client option is presented to allow the ThinClient client portion of the runtime to be installed for those clients that need ThinClient access to a server computer. You are prompted for a server machine. When the ThinClient client (icrunrc) starts, it connects to the ThinClient server on a server machine running ICNETD. (icrunrc.exe takes a "-M machine" argument to specify the server machine.) The client then performs a logon to the server with a username/password just as if you were accessing a file using the ICNETD client/server support. After a good logon, the ICNETD server will start a ThinClient server to provide SP2 and FormPrint communication with the ThinClient client. On the client, ensure that the following are accessible in the current directory or via PATH, SP2DIR, QPRDIR, etc: - panel files - fonts.sp2 and/or fonts.qpr - image files - help files - repeat group files - other needed .dll (jpeg) - sp2tc.ini (ThinClient (gui) startup file) ThinClient server ----------------- The ThinClient server is started by ICNETD and runs the sp2logon.cx program by default. Under Windows, the ThinClient server is installed when ICNETD is selected. When the ThinClient server is invoked by ICNETD, it requests an ICOBOL runtime license when a gui call (sp2 or qpr) it requests and an SP2 runtime license from the license manager. If none has been specified, sp2logon.cx is used by default. The ThinClient server uses consoles with device set to "icrunrs" first choice and second choice "NUL" (Windows) and "NULL" (UNIX). (The last are the same as for detached programs.) The ICTERM setting should be set to file. NOTE: All users that attach to ICNETD must have the "Log on as Batch" privilege when the server is an Windows NT/2000 machine. Also note that under Windows 2000 the password cannot be empty. On the server, ensure that the following are accessible in the current directory or via ICCODEPATH, ICDATAPATH, PATH, SP2DIR, QPRDIR, SP2.CFG, QPR.CFG, etc: - cobol object code (.cx files) - data files - panel files - sp2 configuration file ?? (sp2.cfg) - sp2tc.ini (ThinClient (gui) startup file) Once the application is running, it will make SP2 (and FormPrint) user interface calls which are intercepted by the ThinClient (gui) server library. Some of these calls are processed on the server and some are sent to the client machine for processing. Normally sp2 calls sent to the client will result in a response from the the end user. Each ThinClient (gui) server requires an ICOBOL runtime license and a SP2 runtime license. There is NO SEAT licensing across a network. The ThinClient (gui) can only communicate with an ICNETD service 2.70 and up. To debug ThinClient (gui) consider the following: A. Make sure the program(s) run without ThinClient (gui) before moving to ThinClient. B. With ThinClient (gui) B.1 On the client, set SP2DBG=4 to get an sp2dbg.xxx log file. (QPRDBG=4 for FormPrint) B.2 On the server, set SP2DBG=2 to get an sp2dbg.xxx log file. (QPRDBG=4 for FormPrint.) B.3 On the server, turn on ICNETD surrogate tracing (icnetd -O b). This will cause icrunrs_(pid).lg files to be created for each icrunrs started. Any ICOBOL errors will be logged to this log file. Without this log file, all ICOBOL messages are lost. B.4 On the server, turn on ICNETD server tracing (icnetd -O a). Provides more logging information in the icnetd.lg file. (REMEMBER SP2DBG is set in the sp2 configuration file, SP2.CFG, and QPRDBG in QPR.CFG) QPRLOG=1 in the QPR.CFG file will generate a log file. (set SP2DBG=5 if the program is crashing. This will cause a dump file uib.dbg to be created to send to support.) sp2 ThinClient (gui) version 4.0.31 ----------------------------------- ------------ Introduction ------------ sp2 ThinClient (gui) allows you to run a COBOL sp2-based application on your server machine and deploy the application's graphical user interface to any client machine connected to the server via a TCP/IP network. (For details on developing using sp2, please see the main sp2 documentation - this documentation assumes working knowledge of the sp2 product.) The operating system on the server may be MS Windows, Unix, or various other server-based systems. The operating system on the client machines must be MS Windows (32bit). The main advantage to this architecture is that business logic and database files are maintained in a central location, yet end-users still have access to a graphical user interface and all its associated conveniences. This contrasts with traditional server-based systems: first, systems using terminal-based clients which do not allow graphical user interfaces; second, systems using "fat" clients which force copies of the business logic to be maintained on all the client machines. The architecture also contrasts with that of server-based systems using web-browser front-ends. Browser-based systems are convenient if end-users tend to be casual users and your system needs only a fairly rudimentary user interface (the sp2 Web Client product allows the development of such a system in COBOL). One big advantage of a browser-based system is that no special software need be installed on the client apart from the browser itself. The thin-client architecture, however, is probably better for Windows users needing access to the system on a more regular basis and where a more robust user interface is appropriate. In such a situation, these advantages outweigh the minor inconvenience of installing the client software. -------- Printing -------- The ThinClient (gui) software also works in cooperation with the FormPrint software to allow a server-based program to offer remote printing on a printer connected to the client machine. ------------ Configuration ------------ Installation and configuration are a critical part of setting up ThinClient (gui) so please follow these instructions carefully. Server ------ 1. Ensure that the following are accessible in the current directory or via the ICCODEPATH, ICDATAPATH, PATH, SP2DIR, QPRDIR, SP2.CFG, QPR.CFG, etc.: - cobol runtime - cobol object code (.cx) - data files - panel files - sp2 configuration file (if appropriate) NOTE: On a UNIX server the sp2 configuration files is SP2.CFG (note uppercase). Client ------ 2. Ensure that the following are accessible in the current directory or via the PATH, SP2DIR, QPRDIR, etc.: - panel files - fonts.sp2 (and fonts.qpr if printing) - image (bitmap) files (if used) - help files (if used) - repeat group files (if used) - other dlls (jpeg support, etc. if used) 3. Start the ThinClient (gui) client application. ------------ How it works ------------ On the server, the "listener" process waits for connections from client machines. This listener process is ICNETD. The listening is done only on a specific port - the default is 7333. When the ThinClient client program is run, it attempts to connect with the server and, if all is well, the listener process accepts this connection, does the necessary user logon, and then invokes the ThinClient (gui) server of your application - for reasons why the connection might not be made, see "Common problems" below. (I.E., sp2logon is the default ICOBOL program that is started by the ThinClient (gui) server. You can replace the SP2LOGON.CX file with the appropriate ICOBOL program to be run or use ICCONFIG/ICEDCFW to change the default program, or specify the name of the program to be run.) Once the application is running, it will make SP2 user interface calls which are intercepted by the ThinClient (gui) server library (sp2.dll on Windows, sp2tc.a on UNIX). Some of these calls are processed on the server machine (sp2local.dll on Windows, sp2local.a on UNIX) and some are sent to the client machine for processing (sp2unbuf.dll and sp2cli.dll). By allowing the server to perform some of the internal sp2 processing, the server library cuts down on the amount of data that must be transferred over the network. Communication delays are also cut down by buffering up the data that has to be sent. Additionally, this data can be compressed and encrypted - see "Configuration" below. Normally, sp2 calls sent to the client will result in a response from the end user. This response, which might be data entered into entry fields or buttons being clicked or whatever, is sent back to the server for further processing. --------------- Common problems --------------- 1. Client cannot connect to server - check that server listener program is running - on the server, check that port number is correct - check address of server in the startup (-M name) - check that connections on this port are acceptable to the firewall, etc. 2. Server program doesn't run - program not found because ICCODEPATH set incorrectly 3. Server program runs but crashes - check that panel files are on server in current directory - or set SP2DIR or QPRDIR so they can be found 4. Client crashes - check that panel files are on client in current directory - or set SP2DIR or QPRDIR so they can be found ------------- Configuration sp2tc.ini ------------- Configuration is done in various ways: 1. Server configuration - sp2tc.ini (Under UNIX, this file is first sought in /etc and then in the current directory) 2. Client configuration - sp2tc.ini 3. Regular sp2 configuration - SP2.CFG, etc. The sp2tc.ini file on the server and client is a regular Windows .ini file, broken up into sections containing variable=value statements. On Windows, the file can be in the current directory or the Windows system directory. On UNIX, the file can be in /etc or in the current directory. Server configuration (sp2tc.ini) -------------------- [ServerConfig] section: LogFileName - the name of the file where versions, connections and errors will be recorded. If this is not set, Windows errors will be reported in a messagebox, but UNIX server errors will not be reported. This name should usually be a full path name. DebugLog - if set to TRUE writes socket setup messages to the log file. This should only be set at the request of support. Debug - if set to TRUE writes a tc.dbg log file for recv messages from the client. This should only be set at the request of support. ReturnErrors - if set to TRUE, causes 5 to be returned in PANEL-ret-code if a socket error occurs. Otherwise the application will just be cancelled if an error occurs. **** GENERALLY WE SUGGEST THAT ReturnErrors=TRUE BE SET TO ALLOW THE RUNTIME TO CLEANLY SHUTDOWN AND CLOSE FILES!! If set to TRUE ReturnErrors will handle 9999 errors before failing. If you wish this count to be a smaller value then set ReturnErrors to a value. Generally should be larger than 10. GetClientWindowDef - if set to TRUE, causes all get-window-def calls to retrieve window data from the client as if wd-width were set to -1 (see sp2-get-window-def below). MonitorFileName - the name of a file where current connections are listed. Do not attempt to modify this file. Each line in the file is formatted as follows: process id for 10 client ip for 16 start date for 10 start time for 10 last activity date for 10 last activity time for 10 last activity type for 4 (b=begin s=send r=recv e=end) File may be "cleaned up" by making a CLEAR-MONITOR (value 136) call as the first SP2 call of a program. MonitorDirName - the name of the directory for the monitor files to be generated as .mon. This can only be set if MonitorFileName is NOT set. BufferNoWait - if set to TRUE, causes CONVERSE-PANEL and GET-INPUT calls to be buffered with wait-sw=n. (Added in 5.0.5) [AutoVersionControl] section: Source - if set to TRUE, activates the Automatic version control feature (see "Automatic version control" below), - if set to ONDEMAND, activates the Ondemand version control feature (see "Ondemand" below). Sharing - set to TRUE to allow multiple client processes to access the same file when Source=ONDEMAND is set SourceDir - directories to look for files that are to be transferred if the individual file directory is not specified. Use standard directory separators for host operating system (eg. semi-colon for Windows). DoAlways - if set to TRUE, always goes thru the Automatic version feature with SOURCE = TRUE or ONDEMAND [AutoVersionControlSourceFiles] section: Contains list of files to be transferred in format "filename=dirname" where dirname is the directory containing the file (optional) [AutoVersionControlDependencies] section: (for ActiveX controls) object=file|file|file where "object" is the name of the primary file associated with the object when originally defined (eg. myctrl.ocx) and "file" is the name of a secondary file needed by the object (eg. myfuncs.dll). [Encryption] section: Key - the 16 byte value (128 bits) to be used for generating encryption tables - this activates the encryption process. If this is set to the value "dynamic" (Key=DYNAMIC), a different key will be automatically generated by the server for each session and this key will be changed by the client after the initial connection has been made. If this is set to the value "aesdynamic" (Key=AESDYNAMIC), standard AES encryption will be used - the file aes.dll must be present on both client and server (windows only). If this is set to the value "enhdynamic" (Key=ENHDYNAMIC), a special technique will be used so that the key used for encryption will be dynamically generated on server and client and never actually passed between them. This option is also activated if Key=AESDYNAMIC is set. (AES is only available when using a Windows server.) Log - the name of the binary file to contain a copy of the data actually transmitted and received (for testing only) Compression - if set to TRUE, causes the datastream to be compressed prior to transmission CompressionLog - the name of the file to contain a summary of the compression done [ExecutablePrograms] section (Windows only): Contains list of programs that can be executed via the sp2-execute-program function call. If the section is not present, any program may be executed. If the section is present but empty, no programs may be executed. Client configuration - sp2tc.ini -------------------- [ServerConfig] section: LogFileName - the name of the file where versions and errors will be recorded [ClientConfig] section: Debug - if set to TRUE writes extra messages to the log file and dumps a dump.tc file for the client. This should only be set at the request of support. [AutoVersionControl] section: Destination - if set to TRUE, activates the Automatic version control feature (see "Automatic version control" below) ShowDownloadMessage - if set to TRUE, a small window will display the name of the file currently being transferred DestinationDir - the name of the directory where the transferred files will be copied Regular sp2 configuration - sp2.cfg ------------------------- Regular sp2 configuration (see Appendix B in the sp2 user guide) is just as important in a ThinClient (gui) environment as in a standalone environment. Variables may be set by way of a configuration file (default is SP2.CFG) or as environment variables. Most of the variables should be the same on the server and client machines but some should not, in particular, SP2DIR. On the server, it may be appropriate to place panel files in a different directory from the current directory. On the client, panel files will normally be in the current directory. ------------------------- Automatic version control ------------------------- This facility allows you to update files on the client machine using the server as the source. The files that might be updated are as follows: - panel files - fonts file - icon files (bitmaps, etc.) - sp2unbuf.dll - sp2cli.dll - other dlls (jpeg support, etc.) - configuration file (SP2.CFG) - help files - repeat group files This means that the only files that have to be on the client machine initially are icrunrc.exe, sp2cli.dll, sp2unbuf.dll, and sp2tc.ini To activate this facility, do the following: 1. On the server machine, update sp2tc.ini to set Source=TRUE in the [AutoVersionControl] section and list the files to be updated in the [AutoVersionControlSourceFiles] section. Each file must be followed by an = sign. The directory (including the trailing slash) where the file is located may follow this = sign if the file is not in the current directory. 2. On the client machine, update sp2tc.ini to set Destination=TRUE in the [AutoVersionControl] section. If you would like a window to appear during the download process, set ShowDownloadMessage=TRUE. If you would like the files to be placed in a directory other than the current one, set DestinationDir=directory-name. Using this facility, all files that need to be updated on the client will be uploaded to the client before any windows have been displayed. This usually works fine but there can be a delay if, say, a panel file that needs to be transferred is particularly large. This delay can be annoying, especially if only a subset of the panels in the file will be accessed by the user. As of version 4.0.24, there is an alternative to this standard version control facility - on demand version control, described in the next section. ------------------------- On demand version control ------------------------- Introduced in version 4.0.24 (version 4.0.66 of sp2cli.dll also required), this facility achieves the same end result as standard version control, but files and objects are uploaded to the client on an as-needed basis rather than at the start of the session. This is particularly useful if you have a large panel file because panels are uploaded individually rather than along with all the other panels in the file. To activate on demand version control, set Source=ONDEMAND rather than Source=TRUE in [AutoVersionControl] on the server machine. Initially at least, it is not necessary to list files that may need to be uploaded in [AutoVersionControlSourceFiles] - if a file or panel is not on the client, the client will ask the server to upload it. But the file must be able to be found on the server via some SP2 method, SP2DIR, SourceDir, or being listed. Some files cannot be uploaded "on demand" and so must be listed and transferred in the standard way - these files are: sp2unbuf.dll sp2cli.dll SP2.CFG SP2MYOWN.CFG If a file is changed after on demand version control is implemented, include the file in [AutoVersionControlSourceFiles] but precede its name with a ">", for example: >example.pan This will cause the file to be updated on the client when it is first accessed and the client version is out of date. If the file is a panel file, panel file objects will be uploaded as needed. If the ">" is omitted, the file will be uploaded as per standard automatic version control even though Source=ONDEMAND. Usually, if an object is needed on the client, a single object or file can be uploaded to satisfy the need. This may not be the case with ActiveX controls, for example, when multiple files may need to be uploaded. To allow for this, include a new section in the server sp2tc.ini file called [AutoVersionControlDependencies] with each entry having the form: object=file|file|file where "object" is the name of the primary file associated with the object when originally defined (eg. myctrl.ocx) and "file" is the name of a secondary file needed by the object (eg. myfuncs.dll). Sometimes it is necessary to invoke multiple client processes for a single client i.e. a single client machine. If these processes use the same panel file, specify Sharing=TRUE in [AutoVersionControl] otherwise a subsequent process will not be able to access a panel file being used by the initial process. ---------------------------------- Special ThinClient (gui) functions ---------------------------------- The following functions are specific to the ThinClient (gui) environment. In a regular standalone environment these functions will fail but will have no effect on the application. 01 SP2-THIN-CLIENT-CODES. 05 SP2-EXECUTE-PROGRAM PIC S9(4) COMP-5 VALUE +97. 05 SP2-EXECUTE-CLIENT-PROG PIC S9(4) COMP-5 VALUE +107. 05 SP2-COPY-FILE-TO-CLIENT PIC S9(4) COMP-5 VALUE +108. 05 SP2-COPY-FILE-TO-SERVER PIC S9(4) COMP-5 VALUE +112. 05 SP2-GET-COMMAND-LINE PIC S9(4) COMP-5 VALUE +113. 05 SP2-GET-CLIENT-IP PIC S9(4) COMP-5 VALUE +119. The following function code is included in qpr.cpy as follows: 03 QPR-END-SESSION PIC S9(4) COMP-5 VALUE +16. DESCRIPTIONS ------------ sp2-execute-program (97) (Windows only) --------------------------------------- Start up a new client/server process. Parameter is sp2-buffer. Place name of server program to be invoked in sp2-bf-data. This name overrides whatever is specified in StartupCommand in sp2tc.ini. A new copy of sp2tccli.exe will automatically be invoked on the client to communicate with the new server program. To start up a new client/server process in unix, see "sp2-get-command-line" below. If an [ExecutablePrograms] section is present in sp2tc.ini, the name of the program being executed must be included in this section. (This function will actually work in a standalone environment and can be used to invoke another executable.) sp2-execute-client-program (107) -------------------------------- Start up a new client process. Parameter is sp2-buffer. Place name of client program to be invoked in sp2-bf-data. sp2-copy-file-to-client (108) ----------------------------- Copy a file from the server to the client. Parameter is sp2-buffer. Place the name of the file to be retrieved from the server (including directory if desired) in the first half of sp2-bf-data. Place the name of the file to be created on the client (including directory if desired) in the second half of sp2-bf-data. sp2-bf-data may be expanded if necessary as long as sp2-bf-len is reset appropriately. Instead of a server file name, you can substitute the string "memory=" followed by your own data for a length of (sp2-bf-len / 2 - 7). This data will be written to the file on the client. sp2-copy-file-to-server (112) ----------------------------- Copy a file from the client to the server. Parameter is sp2-buffer. Place the name of the file to be retrieved from the client (including directory if desired) in the first half of sp2-bf-data. Place the name of the file to be created on the server (including directory if desired) in the second half of sp2-bf-data. sp2-bf-data may be expanded if necessary as long as sp2-bf-len is reset appropriately. Instead of a server file name, you can substitute the string "memory=" - data read from the client file will be placed after the "memory=" up to a length of (sp2-bf-len / 2 - 7). sp2-get-command-line (113) -------------------------- Retrieve the command line used to invoke the current ThinClient (gui) client session. Parameter is sp2-buffer. By using this function, different client icons can be set up to start different programs. For example, if the icon is given a command-line of "sp2tccli acctpay", the default server program (as in the server cobolrpc.ini) will be invoked. This program can make a get-command-line function call, extract the command-line parameter (in this case "acctpay") and call the acctpay module. This command is very important for unix servers if different programs are to be invoked because the program specified in sp2tcgo is always invoked initially. Insert the following code in your initial program to determine what program should be invoked: move low-values to sp2-bf-data call "SP2" using sp2-get-command-line sp2-buffer move 1 to ptr unstring sp2-bf-data delimited by space into arg1 arg2 arg3 with pointer ptr if arg2 = spaces move default-program to program-name else if arg2 (1 : 1) numeric move arg3 to program-name else move arg2 to program-name end-if end-if call program-name sp2-get-client-ip (119) ----------------------- Retrieve the IP address of the client. Parameter is sp2-buffer. qpr-end-session (16) -------------------- This function (parameter qpr-null-parm) must be inserted into a FormPrint program if the application that the program is part of does not make an SP2-END-SESSION call i.e., the application makes QPR calls but no SP2 calls. Other Function Changes ---------------------- sp2-set-text-mode (66) ----------------- This function will return 4 or 5 in sp2-np-ret-code if called in a ThinClient (gui) session: 4=Windows server, 5=Unix server. sp2-get-window-def (34) ------------------ Set wd-width=-1 and get-window-def will retrieve window data from the client rather than the server. This allows the actual values for wd-width, etc. to be retrieved. sp2-set-window-def (33) ------------------ Set wd-sbar-sw=x and set-window-def will allow window positions to be changed on the client. (Normally window positions cannot be changed except by the client.) sp2-set-ocx (80) ----------- Set oc-options to 2 and set-ocx will allow a value to be returned from a method call. sp2-get-property (121) ---------------- Set pr-action to T and get-property will retrieve data from the client rather than the server. ------------------ System error codes ------------------ The following is a list of error codes that you might see in the log file generated on server or client as a result of the sp2tc.ini "LogFileName" directive (these are standard socket errors - on unix systems the codes might be different): 10004 Interrupted system call 10009 Bad file number 10013 Permission denied 10014 Bad address 10022 Invalid argument 10024 Too many open files 10035 Operation would block 10036 Operation now in progress 10037 Operation already in progress 10038 Socket operation on non-socket 10039 Destination address required 10040 Message too long 10041 Protocol wrong type for socket 10042 Bad protocol option 10043 Protocol not supported 10044 Socket type not supported 10045 Operation not supported on socket 10046 Protocol family not supported 10047 Address family not supported by protocol family 10048 Address already in use 10049 Can't assign requested address 10050 Network is down 10051 Network is unreachable 10052 Net dropped connection or reset 10053 Software caused connection abort 10054 Connection reset by peer - This is the error you usually get if the client or server program terminates abnormally. 10055 No buffer space available 10056 Socket is already connected 10057 Socket is not connected 10058 Can't send after socket shutdown 10059 Too many references, can't splice 10060 Connection timed out 10061 Connection refused 10062 Too many levels of symbolic links 10063 File name too long 10064 Host is down 10065 No Route to Host 10066 Directory not empty 10067 Too many processes 10068 Too many users 10069 Disc Quota Exceeded 10070 Stale NFS file handle 10091 Network SubSystem is unavailable 10092 WINSOCK DLL Version out of range 10093 Successful WSASTARTUP not yet performed 10071 Too many levels of remote in path 11001 Host not found 11002 Non-Authoritative Host not found 11003 Non-Recoverable errors: FORMERR, REFUSED, NOTIMP 11004 Valid name, no data record of requested type 11004 No address, look for MX record Remember to help debug, use the SP2DBG entry for debugging information for SP2 and the QPRLOG entry for debugging QPR. 2. ICSP2 has been upgraded to use: SP2 versions: runtime: 4.0.31 editor: 4.0.29 Changes: A) A new utility, sp2print.exe, is included with the release. This allows the user to obtain a printed copy of a panel's current appearance. The syntax is: sp2print [ panel-file-name [panel-name]] If no arguments are not supplied, the utility prompts for the needed information. If only the panel-file-name is given then ALL panels are printed. The selected panel will be displayed and a snapshot of the desktop sent to the selected printer. Note: 1. sp2print.exe must be able to find sp2.pan or it will terminate with no error message. SP2DIR is used. B) The sp2gen.exe utility has been enhanced by the addition of a windows interface. If specified on the command line with no argument, or if clicked in an Explorer-type list, sp2gen will display a dialog box to prompt the user to select a panel file. The output files will appear in the same directory as the panel file. Note: 1. sp2gen.exe must be able to find sp2.pan or it will terminate. SP2DIR is used. 2. sp2gen.exe must be able to find the template file, sp2.cbx. SP2DIR is used. C) The editor will now disallow too many decimals in a numeric field. D) The editor now allows for more control keys in the properties box. E) The backslash character is now allowed in an ocx property value. F) The help file is now closed on END-SESSION rather than CLOSE-WINDOW. G) Font ids 0 and -1 are now labeled as default fonts rather than system fonts. H) The help keyword now can be greater than 30 characters. I) An SP2 panel now may contain up to 500 groups. J) SP2 now allows 256 characters in the execute-program buffer. K) Two functions have been removed from the sp2.cpy file. The functions are SP2-SET-PANEL-SELECTS and SP2-GET-PANEL-FIELDS. L) The greeting banner and file icon have been updated. Fixes: A) A problem was corrected with the F1 key returning control twice. B) A problem with default fonts was corrected. The problem occurred if system large fonts was selected. C) A problem with z's after decimal point was corrected. D) Corrected a problem with focus change involving an extended scrolling repeat group. F) Correct current color for property box long fields. 3. ICQPRW has been upgraded to use: QPR versions: runtime: 4.0.27 editor: 4.0.29 Changes: A) The qprbmpws.cpy file now incorporates the qprmaint.cpy file with a COPY statement. A program with a COPY "qprbmpws.cpy" statement must not also have a COPY "qprmaint.cpy" statement, or compilation errors will occur. B) The fields area in qpr-converse-data (in qprmaint.cpy) is now defined as a 2000-byte field. The qprmaint.cpy file also now has a definition for WS-BUFFER, used in several example programs. C) The newform.cbl and gridline.cbl example programs were modified to use the new 2000-byte fields area in qpr-converse-data. D) The chgform.cbl example program has been modified to use the demoform.pan panel file. E) A new example program, chgbmp.cbl, is included. It is an example of changing a bitmap using the qprbmp routine. F) Three new routines (qprrsval.cpy, qprrsfmt.cpy, qprrscap.cpy) are provided to reset a field's value, format, and caption respectively. These are in the qpr directory of the release. G) The greeting banner has been updated. Fixes: A) A problem with discrete values in properties box was corrected. B) A problem with print preview was corrected. It would hang if no control keys were defined. C) A problem with non-rgb colors was corrected. D) Print preview was looping on a bad form. This has been corrected. F) More options missing from properties box. Changes and New Features in 3.03 -------------------------------- 1. ICSP2 has a new version 4 .hlp file. Changes and New Features in 3.02 -------------------------------- 1. ICSP2 and ICQPRW have been updated to version 4 of the sp2 and FormPrint products from Flexus. This first portion of this readme discusses SP2. The SP2 discussion of the new editor is applicable to the new QPR editor as well. SP2 versions: runtime: 4.0.26 editor: 4.0.27 QPR versions: runtime: 4.0.27 editor: 4.0.27 2. A new manual is available for SP2. It is titled "Cobol SP2 User Interface Development System - Version 4.0 User Guide". Please consult the manual for more complete information. 3. The new versions of ICSP2 and ICQPRW can be used to maintain and create panels for older versions as long as no new features are used. Older panel files can be used without change with the new versions of ICSP2 and ICQPRW. SP2 --- The SP2 panel editor has been redesigned to provide a more powerful graphical interface which makes panel design quicker and easier. In addition to the format window where the panel is actually designed, there are two other windows: the treeview window and the properties window. If a toolbar is defined, a toolbar window also appears. The treeview and properties windows occupy the right half of the panel when the editor is first invoked. The initial format window is about half the size of the previous editor's. The toolbar window, if present, appears above the format window. The windows are separated by movable frames allowing the user to shape the windows as desired, so it is easy to expand the format window. Special keys ease navigation between the windows. F2 toggles to the treeview window, ESC to the properties window, and F3 toggles between the toolbar window (if defined) and the format window. The treeview window occupies the top right of the editor's display. This has an Explorer-type display listing all the panels in the current panel file. Clicking the plus sign beside a panel causes an expanded listing of the panels details, including the panel name and categories for the static text, fields, groups, and repeat groups in the panel. If any definitions exist in any of those categories, a plus sign appears beside the category name; clicking it expands the listing to show all the defined objects. When positioned in the treeview window, double-clicking or pressing enter on an item in the current panel selects the item in the format window and displays the item's properties in the properties window. Clicking on items in other panels will allow dragging fields and groups into the current panel from another panel. This allows a uniformity of design as commonly-repeated fields such as customer name or account number can be simply dragged from a previously designed panel. A complicated repeat group and its component fields can be quickly inserted into a new panel simply by dragging the group. Dragging a panel from the treeview window to the format window opens the panel. With this feature, you can quickly switch back and forth between panels, even panels in different files. All options can be set by using the properties window which occupies the bottom right of the display. A down arrow icon on a properties box line signifies that a list of values is available for that line by clicking the down arrow. The ribbon bar no longer exists. The list of properties varies depending on the object type of the currently selected object. Object types include panel, toolbar panel, field, group, repeat and static. For certain properties like the name, the right side of the property line holds the value. Properties such as Options-3 are combinations of several options. The current option value is shown in the right side of the box line. If none of the options in options-3 is selected, for example, the value shown is X"00". Clicking the right end of the box causes the down arrow to appear. When the down arrow is clicked, a list of available values is displayed. When one is selected, a plus sign appears to its left in the list. As other options are selected, the cumulative value appears in the box line. For example, if X"04" and X"08" are both selected from a list, the value shown in the box line is X"0c", and when the list is displayed, the values for X"04" and X"08" both appear with a plus sign. On menu, toolbar, color and font lists, clicking on the right side of the property box displays a list of items. When this list is displayed, it can be maintained by a right mouse click or the F2 key (at all other times F2 would toggle to the treeview window). The font and color lists in the editor now hold up to 200 entries. ActiveX controls are displayed as field objects. Clicking on the Value property box displays a listing which shows the filename of the control in the Icon file line, and a down arrow which pops up a window showing all the other controls used by the ActiveX control. The new interface makes using SP2 easier and faster because the properties are listed on the screen; you don't have to hit ctrl-right-arrow multiple times in the old field characteristic ribbon until the desired list of options appears. For example, to create a graphical pushbutton with a tooltip: * click the "Icon" icon then click in the format window where you want the windowed icon to appear * hit ESC to move to the properties window. The "Usage Option" and "Value" property lines are both visible. * click the right half of the "Usage option" property box, and click "windowed" in the popup that appears * click the right half of the "Value" property box. In the resulting popup, type the icon filename into the "Icon file" field. The default number and size for a bitmap is 1/16. If that is not the case, enter the number and size information in the "Icon details" field. * press Page Down to scroll down a screen in the property window, and the "Help Key" and "Message Text" properties are visible. * click the right half of the "Help Key" property box, and either type the key value or press the associated key. For example, if you wanted the graphical pushbutton to return the value of the F3 button, just press F3 and 317 appears in the box. (Decimal values for keys are in Appendix A of the COBOL sp2 Manual.) * click the right half of the "Message text" property box, and type the tooltip text. * in the format window, adjust the size of the field to fit the icon. In the old editor, to do the same thing you had to: * click the "Icon" icon then click in the format window where you want the windowed icon to appear * while positioned on the icon field, in the 2nd box of the field characteristic ribbon, type the icon filename, preceding it with a comma * in the 4th box of the field characteristic ribbon, click the down arrow and select bitmap from the list * click the 3rd box of the field characteristic ribbon, and either enter the key value, or hit F2 and then the actual key desired (easy-key) * in the 4th box of the field characteristic ribbon, press ctrl-right-arrow 4 times until "Not windowed" appears in the field; click the down arrow and select "Windowed" from the list * while positioned on the icon field, select Options->Support from the menu. Enter the tooltip text in the Message Line Text box in the resulting popup. * in the format window, adjust the size of the field to fit the icon New SP2 features ---------------- There are a number of new features in sp2 version 4.0. The sp2.cpy file has changed to reflect new features. Any programs which are using a hard-coded version of sp2.cpy or portions thereof are therefore subject to problems. If for some reason it is necessary that a program use hard-coded portions of sp2.cpy, it should be compared to the new version of sp2.cpy and any changes incorporated into the program. * Treeview controls SP2 treeview controls allow programs to manipulate a treeview display much like that used in the new editor. See the treeview.cbl program for an example of how to use these controls. Definition ---------- sp2-fd-control-type = "i" (icon) - Control Type property in editor sp2-fd-type = x"05" (activex type) - Type property in editor sp2-fd-initial-val (9 : 12) = "somename.tvw" - Value property in editor sp2-set-vbx calls ----------------- sp2-vb-prop = 0 insert item at current level sp2-vb-index = 0=last 1=first 2=sort 3=after current item sp2-vb-value = item text sp2-vb-prop = 1 set current level sp2-vb-index = level (starting at 0=root) sp2-vb-prop = 2 set current item at current level sp2-vb-index = item number (starting at 1) sp2-vb-prop = 6 delete item sp2-vb-index = -1=delete all items 0=current item at current level sp2-get-vbx calls ----------------- sp2-vb-prop = 3 get selected item (sets current item and level) sp2-vb-index = item number (starting at 1) sp2-vb-value = item text sp2-vb-prop = 4 get current item at current level sp2-vb-index = item number (starting at 1) sp2-vb-value = item text sp2-vb-prop = 5 get current level sp2-vb-index = level (starting at 0=root) data returned in sp2-key-vbx ---------------------------- xxxxxxx-menu-id = id of field xxxxxxx-menu-option = "treeview selection" - the mouse has been double-clicked xxxxxxx-menu-option = "treeview enter" - enter has been pressed xxxxxxx-menu-option = "treeview expand" - the mouse clicked on a + sign xxxxxxx-menu-option = "treeview dragdrop" - an item has been dragged * Spinbutton fields Spinbutton fields may now be created with the SP2 editor. A spinbutton is a numeric entry field with an up arrow and a down arrow beside it; clicking the up arrow increments the value in the field while the down arrow decrements it. In the editor, create a system entry field. Hit ESC to position to the properties window. Set the "Type" property to numeric. In the "Usage" property box, click on the right half of the line and select spinbutton from the list. Set the desired picture in the "Format" property. Set an initial value by setting the "Value" property. A custom entry field cannot be a spinbutton. To do this at runtime for a system entry field (SP2-FD-CTRL-TYPE=e), you would make the field a spinbutton by calling SP2-GET-FIELD-DEF, setting SP2-FD-CURS-SKIP=b, and calling SP2-SET-FIELD-DEF. * Popup menus The menu associated with a panel can be displayed as a popup rather than a menubar (the panel will not be displayed at all). To do this, move X"08" to SP2-PD-OPTIONS-3. This is equivalent to setting wd-hide-sw=m at the window level. When the panel is conversed menu selections will be returned as normal with key=-6 and menu-id=option selected. If no option is selected key will be -5 (close) or -3 (switch). A window switch will only be allowed if switch-sw=y. * "What's this?" help "What's this?" help (also known as question mark help) is now supported. This causes a question mark to be placed in the titlebar of the window. If the user clicks the question mark, the mouse pointer becomes a question mark and the user can then click on a field to bring up field-level help (panel-level help will be displayed if no field-level help is available). Click on the panel to display the panel's properties window, then position to the properties window. Click on the down arrow of the "Options-3" line, and click on "16 = window help". For "Help Panel", enter the name of the panel to be displayed by the question mark. In the "Help Key" property, define the Help Key by typing its value or simply pressing the desired Help Key. To enable this feature at runtime for a window, move X"01" to SP2-WD-OPTIONS-3 and execute either SP2-OPEN-WINDOW or SP2-SET-WINDOW-DEF. To enable this feature at runtime for a panel, move X"10" to SP2-PD-OPTIONS-3 and use the SP2-SET-PANEL-DEF call. This feature currently only works for dialogboxes and non-custom fields. * New window border types Three additional window border types have been added (sunken, raised, resizable). These are set in the "Window Border Type" property in the editor. These are set at runtime by moving the appropriate value to SP2-WD-BOR-TYPE on the SP2-OPEN-WINDOW call. The values are: s - sunken border e - raised border r - resizable * New statusbar feature Message line text now can be displayed in the statusbar of the highest level parent window instead of the current window. This feature is useful with tab windows since it avoids having a message line for each window. In the editor, move to the properties window for the panel, and select the "Options-3" property. Select the "messageline in statusbar option" from the property list. Next open the "Message text" property, and type in the text for the statusbar. The text can be manipulated by formatting the message line text as follows: /width/border/text/width/border/text/..... where: width=width of this part in 1/10 cells (-1 means extend to right of the window) border=y/n to display/suppress the border for this part text=text to be displayed in this part In order to set this at runtime, prior to compiling the program you must have modified sp2.cpy to expand SP2-PD-MSG-TEXT from 1 to the desired length, and changed SP2-PD-VAR-LEN and SP2-PD-MSG-TEXT-LEN to reflect the change. At runtime, call SP2-GET-PANEL-DEF to get the current panel definitions. Set SP2-PD-MSG-LEN to -2, set SP2-PD-OPTIONS-3 to X"04", and set SP2-PD-MSG-REFRESH to 0. Set SP2-PD-MSG-TEXT to contain the message line text, formatted as above. Call SP2-SET-PANEL-DEF to make the change. * New SP2-SET-CONFIGURATION function The new SP2-SET-CONFIGURATION function allows the SP2 configuration to be dynamically altered at startup. Configuration settings passed with this call override any settings for the same variables found in the configuration file or in the environment. This call should be made before any other SP2 calls. The set-configuration call is allowed even if there is no existing configuration setup. Syntax: CALL "SP2" USING SP2-SET-CONFIGURATION SP2-BUFFER where SP2-BUFFER is defined in sp2.cpy like this: 01 SP2-BUFFER. 05 SP2-BF-RET-CODE PIC S9(4) COMP-5. 05 SP2-BF-LEN PIC S9(4) COMP-5 VALUE +80. 05 SP2-BF-DATA PIC X(80). SP2-BF-DATA can contain any number of configuration variable settings delimited by blanks eg. SP2DIR=.;\SP2 SP2EDT=5 etc. Up to 512 bytes may be passed; to do so, you must change the definitions of SP2-BF-LEN and SP2-BF-DATA in the appropriate SP2.cpy file. They are 80 by default. SP2DBG cannot be set with this call because it is checked during the first call to SP2. SP2-BF-RET-CODE should be checked after the call to ensure the call succeeded. The delimiter for configuration entries is an end-of-line if you're using a configuration file (i.e., SP2.CFG) or the space character if you're using the SP2-SET-CONFIGURATION function. Use of the space character may be a problem if you want to set values with embedded spaces (eg. long file names). To get around this, code the delimiter you wish to use (for example x"09") as the first character in the SP2-SET-CONFIGURATION data. The delimiter must come from the range 0 - 37 (octal); if the first character is above this range and not a space, the space character is defaulted as the delimiter. Thus it is not necessary to code a delimiter if you want to use the space character. * New SP2-EXECUTE-PROGRAM-2 function The new SP2-EXECUTE-PROGRAM-2 function allows a program or script to be executed from an SP2 program. Output from the program is displayed in the program window. The function does not require that a panel file be opened or that an SP2-END-SESSION be executed. The program can not get input from a console window. For this reason, it is recommended that you use the ICOBOL CALL statement if you need to invoke an executable file or command. The function takes SP2-BUFFER as a parameter and invokes the command line in SP2-BF-DATA. The return code in SP2-BF-RET-CODE can be checked for success or failure, with a zero indicating that the program was successfully started. The standard SP2 return codes are used. Syntax: CALL "SP2" USING SP2-EXECUTE-PROGRAM-2 SP2-BUFFER where SP2-BUFFER looks like: 01 SP2-BUFFER. 05 SP2-BF-RET-CODE PIC S9(4) COMP-5. 05 SP2-BF-LEN PIC S9(4) COMP-5 VALUE +80. 05 SP2-BF-DATA PIC X(80). * New SP2 configuration variables There are four new SP2 variables in 4.0. These can be set in the SP2.CFG file, or in the environment. They can also be set with the new SP2-SET-CONFIGURATION function. SP2IGI - Ignore greyed icons If SP2IGI=1, the key related to a greyed-out icon will still function as a valid control key. SP2TAB - Tabcontrol options The SP2TAB variable allows more control over tabs. Set SP2TAB to the indicated value to obtain the described control. 1 - Give focus to the tabs by backtabbing out of the first field on the panel or tabbing out of the last field. 2 - The tabs will be displayed on multiple rows if there is not enough room to display them on one row. 3 - Both options 1 and 2 are set. Note that tab windows' height will be reset if multiple rows are displayed. SP2ALN - Runtime field alignment A new configuration variable, SP2ALN, causes different types of fields to line up better and forces custom and system entry fields with fd-height=0 to be sized the same as the entry field portion of a combobox. Set SP2ALN to the id of the font being used in order to activate this feature. SP2BUV - SP2BUV=1 means buffer unix output till input requested * New icon border type SP2 now allows the border to be displayed as the mouse passes over a windowed icon. In the editor: * create an icon field. Set the "Type" property to bitmap pushbutton, bitmap radiobutton, or bitmap checkbox. * Set the "Usage" property to windowed. * Click the "Value" property, and enter the name of the bitmap file in the "Icon File" field. Enter number and size information in the "Icon Details" field. * Set the "Border type" property to dynamic. * Support for non-SP2 cursor files and animated cursor files SP2 now supports the use of non-SP2 cursor and animated cursor files which can be used to reset the mouse (cursor) shape while the mouse is over a windowed icon. * Create a windowed icon. * Position to the windowed icon field. In the properties window, select the "Current Color" property. From the selection list, choose "015 Default Text/Transparent". The mouse shape will be reset while the mouse is over this icon. The shape used will be SP2-MOUSE-LOCATE by default, unless SP2 finds a file named xxxxxxxx.cur (where xxxxxxxx is the name of the first panel file opened). A .cur file is produced by an icon editor. A .ani (animated cursor) file may be used instead of an .cur file. The SP2-SET-ICON-FILE-NAME function can be used to override the default of the first panel file opened. This function must be called before any windows are opened. * Support for transparent backgrounds This is useful for overlaying fields on top of images. In the editor, click the "Color" property, then when the list is displayed either hit F2 or right-click to maintain the list. Select a color to change or create a new color. In the Color Definition popup, select background, then select transparent from the list. * Runtime minimize/maximize Windows can now be minimized or maximized at runtime with either SP2-OPEN-WINDOW or SP2-SET-WINDOW-DEF. To maximize the window, set SP2-WD-HIDE-SW=a. To minimize the window, set SP2-WD-HIDE-SW=i. * Disabling a window A window can now be disabled at runtime. A disabled window may be displayed, and will respond to its defined control keys; that is, control will be returned to the ICOBOL program if a control key is pressed. The window will not respond to any mouse clicks on it. To disable the window, call SP2-SET-WINDOW-DEF with SP2-WD-HIDE-SW=g. * Minimum window size A window can now be prevented from resizing to less than its original size. To do this in the editor, click on the panel to select the panel's properties, then click on the "Options-3" property, and click on "01 - minimum window size". To do this at runtime, set SP2-WD-MORE-OPTIONS to X"10" when making the SP2-OPEN-WINDOW call to open the window. * Prevent field deletion You can now prevent a field from being deleted during a resize operation. To do this in the editor, position to the field. In the properties window, click on the "Miscellaneous" property, and from the list select "04 = no delete on resize". Programmatically, call SP2-GET-FIELD-DEF to obtain the current field definition, then set SP2-FD-MISC-OPTIONS (in SP2-FIELD-DEF) to X"04", and call SP2-SET-FIELD-DEF to update the definition. * Keep field from top You can now prevent focus from bringing a field to the top. In the editor, position to the field,and in the properties window, click on the "Miscellaneous" property. From the list select "08 = no bring window to top". To do this at runtime, call SP2-GET-FIELD-DEF to obtain the current field definition, then set SP2-FD-MISC-OPTIONS (in SP2-FIELD-DEF) to X"08", and call SP2-SET-FIELD-DEF to update the definition. * Suppress icon focus rectangle You can now suppress the icon focus rectangle for icon fields. In the editor, this is done with the "Cursor-show" property. To do this at runtime, execute SP2-GET-FIELD-DEF, set SP2-FD-CURS-SHOW=n and execute SP2-SET-FIELD-DEF. * Control overwriting child windows You can control the overwriting of child windows when programming SP2 to do parent/child windowing. This is done in the editor by clicking the "Options-3" property and toggling the "32 = clip children" value on or off. * Easy line definitions You can easily define horizontal and vertical lines on the panel, as well as the top left, top right, bottom left and bottom right corners, a cross and top-T, left-T and right-T. Simply define a static text field at the desired location. In the properties window, click on the "Type" property, then from the resulting list, select "l = line". A horizontal line appears where the text field was defined. Next click on the "Text" property, and the popup list shows choices for horizontal, vertical, top left/top right/bottom left/bottom right corners, top-T, left-T, right-T, bottom-T, and a cross. Select the choice and the line is drawn. Change the field size to change the line's length. Enhanced SP2 features --------------------- * Extended repeat groups More than 32k total occurrences are now supported. Source code must be modified to use this enhanced feature. The SP2-REPEAT-EXT structure has been extended to support this capability by the addition of these fields: ******** SP2-RX-LONG-DATA ******* 10 SP2-RX-NEXT-OCC-L PIC S9(8) COMP-5. 10 SP2-RX-NEW-DISP-L PIC S9(8) COMP-5. 10 SP2-RX-BLOCK-DISP-L PIC S9(8) COMP-5. 10 SP2-RX-TOTAL-OCCS-L PIC S9(8) COMP-5. To use extended repeat groups, use the new data items above instead of their smaller counterparts, and set certain switches using negative values instead of positive ones: * Set SP2-RX-BLOCK-SW to -1, -2 or -3 rather than 1, 2, or 3 * Use SP2-RX-BLOCK-DISP-L instead of SP2-RX-BLOCK-DISP * Set SP2-RX-TOTAL-SW to -1 instead of 1, and use SP2-RX-TOTAL-OCCS-L instead of SP2-RX-TOTAL-OCCS * If you want to reset the displacement of the repeat group using the SP2-RX-NEW-DISP method, set SP2-RX-DISP-SW to -1 instead of 1 and use SP2-RX-NEW-DISP-L instead of SP2-RX-NEW-DISP * If you want to use the SP2-RX-NEXT-OCC method to set the cursor position in the repeat group, set SP2-RX-NEXT-OCC to 0 and use SP2-RX-NEXT-OCC-L instead of SP2-RX-NEXT-OCC After setting up the values, call SP2-SET-REPEAT-EXT as usual. To retrieve the new displacement after SP2-KEY-MORE is returned, call SP2-GET-REPEAT-EXT and use SP2-RX-NEW-DISP-L rather than using SP2-CD-NEXT-VERT or XXXXXXXX-NEXT-VERT. You also use this function to retrieve the current occurrence, SP2-RX-NEXT-OCC-L. This function sets only the items in SP2-RX-LONG-DATA. Always set SP2-CD-NEXT-OCCURS or XXXXXXXX-NEXT-OCCURS to 0 before calling SP2-GET-INPUT or SP2-CONVERSE-PANEL. See the repeat2.cbl program in the SP2 examples directory for an example of extended repeat group processing that shows a repeat group with 250000 entries. * Enhanced Multiline support Several enhancements have been made for multiline fields: * The ampersand character is now allowed in multiline fields * Multilines may be initialized with up to 3000 characters of text * A multiline entry will have a horizontal scrollbar if curs-skip is set to "h" (Control type of "h" in the Properties window). * Listbox/combobox list maintained in multiline edit to allow insert/delete * Finer control of repeat group vertical gap The actual vertical gap between rows in a repeat group is calculated by taking the height of the first field in cells and using that number (or a multiple of that number depending on the setting of SP2-RD-VERT-GAP) to increment the row value for each repeated field i.e. incrementor = (SP2-FD-HEIGHT / 10) * (SP2-RD-VERT-GAP + 1). It's now possible to have finer control over the gap by specifying SP2-RD-VERT-GAP in cells rather than rows. In other words, the incrementor value would be (SP2-FD-HEIGHT / 10 + SP2-RD-VERT-GAP). In the properties window for the Repeat group, click on the right half of the "Miscellaneous" property, and select "01 - vertical gap in cells". To do this at runtime, use the SP2-GET-REPEAT-DEF function to get the repeat group's definition, set the X"01" bit of SP2-RD-MISC-OPTIONS, and call SP2-SET-REPEAT-DEF. * Finer control of window position For finer control over window position, the row and column parameters of the SP2-SET-WINDOW-DEF call can be treated as pixel values rather than cell values (which are 2 by 4 pixels). To do this, move X"80" to SP2-WD-MORE-OPTIONS, and the desired pixel values to SP2-WD-ROW and SP2-WD-COL. * Enhanced SP2-QUERY-FILE function The SP2-QUERY-FILE function has been enhanced. It can now be used to retrieve the short file name associated with a long name. The user can also restrict the operation to the current directory. Also, the user can set the title of the dialog box to a desired string. These new flags enable the new abilities: SP2-FI-SHARE=X"01" - return short file name (8.3 format) into SP2-FI-NAME SP2-FI-SHARE=X"02" - do not change current directory SP2-FI-SHARE=X"04" - fi-name is initial file name rather than search string SP2-FI-MODE=t - Use bytes 41-80 of SP2-FI-NAME as the title for the dialog box SP2-QUERY-FILE will return the original name if no short name exists. * Enhanced SP2-GET-COLOR-DEF function SP2-GET-COLOR-DEF has been enhanced to return system color information by setting SP2-CO-ID to a value less than 10. The color details are returned in SP2-CO-RED, SP2-CO-GREEN and SP2-CO-BLUE in the SP2-COLOR-DEF structure. The defined values for SP2-CO-ID are: 1 - window 2 - highlight 3 - menu 8 - button 9 - shading An error is returned for SP2-CO-ID=6. Values 4, 5, and 7 are reserved. Colors added to a panel by the user begin at number 11. * Enhanced SP2-SET-COLOR-DEF function SP2-SET-COLOR-DEF has been enhanced to support transparent color backgrounds. This is useful for overlaying fields on top of images. Programmatically, you set a transparent color by setting SP2-CO-SYSTEM=X"0c" when setting a color's background definition with SP2-SET-COLOR-DEF. * Improved Generate The Generate procedure now allows you to choose the template (cbx) file to be used for generation. The default is the uib.cbx file. Also, if the generation would overwrite an existing file, a popup informs you of that and prompts for permission to overwrite it. Previously the popup in this situation was misleading, since it looked like an error box, and gave the choices OK and Cancel without making it clear that OK would overwrite the file and Cancel would stop the generation. Since you can now select the template file for generation, it is possible to select either uib_crt.cbx or uib_card.cbx to generate crt (.sr) or card (.co) format files respectively. Other changes to SP2 -------------------- 1) The SP2-SET-FONT-DEF function has been changed. It will delete an existing font handle if it is invoked with SP2-FO-GUI-ID and SP2-FO-GUI-ID-2 set to 0. If an existing control is using the font at the time, the font will become invalid, and the control will default to some stock font. For this reason, it is recommended that you execute SP2-GET-FONT-DEF before calling SP2-SET-FONT-DEF. If the font exists, the SP2-FO-GUI-ID and SP2-FO-GUI-ID-2 values will be returned to SP2-FONT-DEF. You then can modify other values if desired before calling SP2-SET-FONT-DEF. Or if the reason for calling SP2-SET-FONT-DEF was to create the font, you don't need to call it. 2) The + and - keys may now be used to check and uncheck checkboxes. 3) A field group by default now has the type "No action" instead of "No member". 4) An error is now returned by SP2-GET-WINDOW-DEF and SP2-SET-WINDOW-DEF if the window is not found. 5) Setting XXXXXXXX-SWITCH-SW=x will cause control to return to the program with XXXXXXXX-KEY = -19 if the user tries to switch windows and is denied for some reason. The reason for denial will always be due to internal validation - not numeric, etc. 6) -18 is returned in XXXXXXXX-MENU-ID rather than -10 if a control field is exited during scrolling. 7) SP2 now allows 260 character file names (except bitmap files, etc.). 8) Allow repeat group scrolling even if there is a window or field switch. 9) The background of icon fields with a border type of "d" is now set to the default window background. 10) Protected system entry fields are now properly supported. 11) SP2 now allows the use of characters other than the comma or the period to separate thousands in numeric items. 12) SP2 now allows ctrl-insert for copy and shift-insert for paste in entry fields. 13) SP2 now allows messagebox text to be up to 5000 characters in length. 14) A problem was fixed in calculating mouse position when processing a click in a custom field. 15) A problem was fixed involving dates in system fields being messed up by the delete key. 16) If an error is encountered (such as required field, etc.) as a user tries to switch to another tab window, the original tab window will be reactivated. 17) Messageline and statusbar text may now be reset in another window by using the SP2-ACTIVATE-WINDOW, SP2-GET-PANEL-DEF, SP2-SET-PANEL-DEF, and SP2-DISPLAY-WINDOW functions. 18) If scrolling becomes too fast in the editor window, it can be brought under control by dragging the mouse beyond the edge of the editor window. QPR --- The QPR panel editor has been redesigned in the same manner as the SP2 editor, with the addition of a treeview and properties windows. The Format, properties and treeview windows are separated by moveable frames. Treeview shows details of all forms in current form file. All options must be set using properties box. Fields and groups may be dragged with the mouse into current form from another form. Dragging a form is equivalent to opening that form. See the discussion in the SP2 section which describes using the editor. New QPR features ---------------- 1) A Print-to-file option is now supported in print dialog. If you check the "Print to file" box when selecting the printer, then when you print the document, a dialog box appears allowing you to name the file. The file is saved as a printer file (.prn). 2) A progress window can be displayed during the "get all pages" and "print previewed pages" operations in print preview. To enable it, set the QPRPVW configuration variable to 8 (or add 8 to its current contents). For example, if you have this set to 1 now to cause print preview to always occur, set it to 9 to also enable the progress window. The text of the progress window can be modified by using the QPRPVT configuration variable. This points to a text file containing preview menu definitions, with each line beginning in column 1. The default contents of this file are: 001~File 021Get ~all pages 022E~xit preview 023~Cancel print 002~View 041~Next page ^PgDn 042~Previous page ^PgUp 043~First page 044~Last page 900Print preview 901Cancel print 902Are you sure? 903Exit preview 904Would you like to print previewed pages? For the progress window, add the following new lines with the text of your choice (shown are the defaults if no QPRPVT file is used). 905Progress... 906Getting page 907Printing page 3) The print preview now features a toolbar with icons for all menu options. Enhanced QPR features --------------------- 1) Allow the title to be set in the editor for print preview. 2) The Generate procedure has been improved. You can now choose the template (cbx) file for generation. 3) QPR now allows 260 character file names (except bitmap files, etc.). 4) Up to 15000 pages are now supported in print preview. 5) Font and color lists in the editor can now hold 200 entries. 6) The ampersand (&) is now allowed in multiline fields. 7) Support for transparent backgrounds has been added. This is useful for overlaying fields on top of images. In the editor, click the "Color" property, then when the list is displayed either hit F2 or right-click to maintain the list. Select a color to change or create a new color. In the Color Definition popup, select background, then select transparent from the list. Miscellaneous changes --------------------- 1) Fixed a problem with window shift when previewing multi-form pages. 2) Fixed a problem with preview-get-all-pages and multiform pages. 3) Fixed a problem with repeat group copy. 4) Fixed a problem with palette logic. Previous versions Changes in 2.62 --------------- 1. ActiveX controls added. sp2 support for ActiveX controls -------------------------------- ActiveX (OCX, OLE) controls are supported through the external DLL interface. 2. JPEG support added. .dll files are included in the release to provide support for JPEG (.jpg) files to SP2 and FormPrint (QPR). The dll's must be present at both runtime and development time. SP2 uses the sp2ima32.dll and vic32.dll files; FormPrint uses qprima32.dll and vic32.dll. To put a JPEG image on an sp2 panel: 1. Click on Icon in the toolbar, then click on the position on the panel where the image is to appear. The icon "net" appears. 2. Click on the net, then select File/Auxiliary File. 3. In the resulting Open dialog box, change the field "Files of type:" from "Select files (*.bmp) to All Files (*.*). Select the desired .jpg file name, and click Open. 4. The image should appear on the sp2 panel. Adjust the icon field size if necessary to fit the image. 5. Generate and save the panel. To put a JPEG image on a QPR form just do the same as above but use the Bitmaps button on the toolbar instead of the Icon button. Updated (4.50) ActiveX documentation ------------------------------------ sp2 support for ActiveX controls -------------------------------- ActiveX (OCX, OLE) controls are supported through the external DLL interface. sp2ocx32.dll should be located in the same directory as sp2.dll. Editor usage ------------ Define an icon field with Type property = x'05' (activex control) and set Value property to: Icon file = junk.ocx Icon details = control.name This is stored internally as " junk.ocx control.name". The ".ocx" in "junk.ocx" causes sp2ocx32.dll to be loaded to process the control. "control.name" is the name of the control, which must be registered. Registering controls -------------------- If you wish to use a control that is not registered use "regsvr32 filename". Alternatively, instead of "junk.ocx", you can enter the name of the dll containing the control (eg. myctrl.ocx) and the sp2 activex interface will attempt to register it for you. Some ocx dll's have an extension of "dll" rather than "ocx" - in this case, enter the name of the dll with an "ocx" extension and the sp2 activex interface will search for a file with a "dll" extension automatically. If sp2 needs to register the control (either during development or at runtime), the dll containing the control (eg. myctrl.ocx) must either be in a directory in the path or in a directory referenced by SP2DIR. Once registered, the dll file should not be moved. See also the section below "Using controls without registering them". Properties and events --------------------- Control properties and events are displayed at the end of the editor properties box (after the regular sp2 field properties) where they can be easily set and selected. Internally, they are held in the sp2 Value property as follows: control.name/property=xxxx/property=xxx/event/event Apart from these properties, which vary from control to control, the following regular sp2 properties effect how a control behaves: Panel Options-3 - usually best to set the x"20" (clipchildren) switch on to ensure that the control is displayed properly. Field Usage option - may need to set this to allow keyboard input to be processed by the control rather than sp2. Special activex properties -------------------------- There are a couple of activex properties, Picture and Font, that are handled in a special way. For the Picture property, set the value to the name of a bmp or jpeg file (including directory if appropriate). For the Font property, use the Font dialogbox to select the font. The font details are held internally as follows: Font=name=?;size=?;weight=?;italic=?;underline=?;strikethrough=? where: name=facename of font size=100000 gives a reasonable size weight=550 or more makes the font bold italic=1 makes the font italic underline=1 underlines the font strikethrough=1 strikes through the font Programming ----------- Properties can be set and retrieved programatically using the set/get-ocx functions. These functions also allow access to methods and information about properties supported by a control: copy "sp2ocx.cpy". call "SP2" using sp2-get-ocx sp2-ocx-parm. call "SP2" using sp2-set-ocx sp2-ocx-parm. sp2-ocx-parm ------------ *copy "sp2ocx.cpy". 01 SP2-OCX-PARM. 05 SP2-OC-RET-CODE PIC S9(4) COMP-5. 05 SP2-OC-LENS. 10 SP2-OC-LEN-LEN PIC S9(4) COMP-5 VALUE +12. 10 SP2-OC-NUM-LEN PIC S9(4) COMP-5 VALUE +12. 10 SP2-OC-CHAR-LEN PIC S9(4) COMP-5 VALUE +60. 10 SP2-OC-VAR-LEN PIC S9(4) COMP-5 VALUE +1890. 10 SP2-OC-VALUE-LEN PIC S9(4) COMP-5 VALUE +80. 10 SP2-OC-TYPE-LEN PIC S9(4) COMP-5 VALUE +10. 05 SP2-OC-DATA. 06 SP2-OC-NUM-DATA. 10 SP2-OC-ID PIC S9(4) COMP-5. 10 SP2-OC-OPTIONS PIC S9(4) COMP-5. 10 SP2-OC-INDEX PIC S9(4) COMP-5. 10 SP2-OC-GET-TYPE PIC S9(4) COMP-5. 10 SP2-OC-ACCESS-TYPE PIC S9(4) COMP-5. 10 SP2-OC-PARM-CNT PIC S9(4) COMP-5. 06 SP2-OC-CHAR-DATA. 10 SP2-OC-PROP-NAME PIC X(30). 10 SP2-OC-OBJECT-PTR PIC X(30). 06 SP2-OC-VAR-DATA. 10 SP2-OC-VALUE PIC X(80). 10 SP2-OC-VALUE-TYPE PIC X(10). 10 SP2-OC-PARMS. 11 SP2-OC-PARM OCCURS 20. 15 SP2-OC-PARM-VALUE PIC X(80). 15 SP2-OC-PARM-TYPE PIC X(10). The above definition can be adjusted to increase the size of sp2-oc-value and sp2-oc-parm-value. Remember to also increase the size of sp2-oc-var-len and sp2-oc-value-len as appropriate. The maximum length for sp2-ocx-parm is 32K. The maximum length for sp2-oc-value or sp2-oc-parm-vakue is 8K. See also sp2-ocx-parm-l below if you need to extend these limits. Getting and setting properties ------------------------------ In a lot of cases, very simple code can be used to get and set properties. To get the value of a property, code: move low-values to sp2-oc-data move my-field-id to sp2-oc-id move "myproperty" to sp2-oc-prop-name call "SP2" using sp2-get-ocx sp2-ocx-parm move sp2-oc-value to ...... To set the value of a property, code: move low-values to sp2-oc-data move my-field-id to sp2-oc-id move "myproperty" to sp2-oc-prop-name move "whatever" to sp2-oc-value call "SP2" using sp2-set-ocx sp2-ocx-parm Unfortunately, some properties require that parameters be set to access them. This is also usually the case with methods. Calling methods and accessing properties with parameters -------------------------------------------------------- To call a method, code something like: move low-values to sp2-oc-data move my-field-id to sp2-oc-id move 1 to sp2-oc-access-type move 1 to sp2-oc-parm-cnt move "mymethod" to sp2-oc-prop-name move "whatever" to sp2-oc-parm-value (1) move property-parm-1-type to sp2-oc-parm-type (1) call "SP2" using sp2-set-ocx sp2-ocx-parm The easiest way to know what to put in sp2-oc-parm-value and sp2-oc-parm-type is to use a program called ocxgen to generate working-storage definitions for all the control's properties and methods. The definitions will be generated in the following form: 01 fieldname-property. 05 property-prop-name pic x(30) value "????????". 05 property-access-type pic s9(4) comp-5 value +?. 05 property-parm-cnt pic s9(4) comp-5 value +?. 05 property-value-type. 10 type-1 pic s9(4) comp-5 value +?. 10 type-2 pic s9(4) comp-5 value +?. 10 filler pic s9(4) comp-5 value +?. 10 filler pic x(4) value low-values. 05 property-parms. 10 property-parm-1 pic x(80). 10 property-parm-1-type. 15 type-1 pic s9(4) comp-5 value +?. 15 type-2 pic s9(4) comp-5 value +?. 15 filler pic x(6) value low-values. 10 property-parm-2 pic x(80). 10 property-parm-2-type. 15 type-1 pic s9(4) comp-5 value +?. 15 type-2 pic s9(4) comp-5 value +?. 15 filler pic s9(4) comp-5 value +?. 15 filler pic x(4) value low-values. etc. ocxgen is discussed in detail below. As an alternative to ocxgen, you can also make a special get-ocx call to retrieve the property definition prior to setting it. Code something like: move low-values to sp2-oc-data move my-field-id to sp2-oc-id move 1 to sp2-oc-get-type move "mymethod" to sp2-oc-prop-name call "SP2" using sp2-get-ocx sp2-ocx-parm This will set sp2-oc-access-type and sp2-oc-parm-type as appropriate so that you just have to move in the appropriate value to sp2-oc-parm-value: move "whatever" to sp2-oc-parm-value (1) call "SP2" using sp2-set-ocx sp2-ocx-parm Omitted Parms ------------- Controls may have parameters to methods that are optional. For example, a control might support 6 parms, but only the first three are required. When these trailing parms are omitted, simply change the sp2-oc-parm-cnt to the appropriate value. However, sometimes leading parms need to be excluded. In this case, move the following value to the sp2-oc-parm-type field of the parm that is being omitted: 01 ws-parm-type-ignore. 05 filler pic s9(4) comp-5 value +10. 05 filler pic x(8) value low-values. Arrays ------ Some controls allow you to set an array of values with one call. Spreadsheet controls usually allow this. To set values in an array, code something like: 01 string-type. 10 xString pic s9(4) comp-5 value +0008. 10 xEmpty pic s9(4) comp-5 value +0000. 10 filler pic s9(4) comp-5 value +0000. 10 filler pic x(4) value low-values. 01 array-type. 10 xArray pic s9(4) comp-5 value +0027. 10 xEmpty pic s9(4) comp-5 value +0000. 10 filler pic s9(4) comp-5 value +0000. 10 filler pic x(4) value low-values. move "Value" to sp2-oc-prop-name move 2 to sp2-oc-parm-cnt move array-type to sp2-oc-value-type move "First Date" to sp2-oc-parm-value (1) move string-type to sp2-oc-parm-type (1) move "Second Date" to sp2-oc-parm-value (2) move string-type to sp2-oc-parm-type (2) call "SP2" using sp2-set-ocx sp2-ocx-parm If an array needs to be used as a parameter in a method call, the array must be set up in the previous call, for example: move 6 to sp2-oc-access-type move 2 to sp2-oc-parm-cnt move array-type to sp2-oc-value-type move "First Date" to sp2-oc-parm-value (1) move string-type to sp2-oc-parm-type (1) move "Second Date" to sp2-oc-parm-value (2) move string-type to sp2-oc-parm-type (2) call "SP2" using sp2-set-ocx sp2-ocx-parm ... move 1 to sp2-oc-access-type move 1 to sp2-oc-parm-cnt move array-type to sp2-oc-parm-type (1) call "SP2" using sp2-set-ocx sp2-ocx-parm Events ------ When an event is fired, panel-key will equal sp2-key-ocx. The actual event returned will be in panel-menu-option. If the event returns a parameter, the value of the parameter or parameters can be returned by setting sp2-oc-get-type to 8 and making an sp2-get-ocx call. On some occasions a value is required to be passed when an event is fired. The sp2 ActiveX interface supports this by allowing you to set these values before the event is fired, in preparation for passing the value. Use an access-type of 2 to indicate that you are pre-loading values to be passed to an event. Place the event name in sp2-oc-prop-name and populate the parms as usual. Use a sp2-set-ocx call to set the value. In the following example, the name of the file to be faxed is preset in anticipation of the event that indicates the fax control is ready to send the file: move low-values to sp2-oc-data move 1 to sp2-oc-id move 1 to sp2-oc-parm-cnt move 2 to sp2-oc-access-type move ws-value-type to sp2-oc-parm-type (1) move fmcap-filename to sp2-oc-parm-value (1) move printstart-event-name to sp2-oc-prop-name call "SP2" using sp2-set-ocx sp2-ocx-parm Alternatively, if you are using sp2thred.dll, you can process events immediately. To activate this feature, make a set-ocx call with access-type=2, parm-cnt=99 and prop-name=event. When this event is actually fired, control will be immediately returned to your program and you can make get-ocx or set-ocx calls to get or set parm values (as above) or other properties, before resuming with a get-input or converse-panel (at which point the event handling code will return back to the control). Events to be trapped are usually selected in the editor and stored in the sp2 Value property. It is also possible to select them programmatically using a get-type=12 call. This is particularly important if you need to trap an event for a collection object which is not accessible until runtime. Set sp2-oc-parm-cnt to the number of events to be trapped, sp2-oc-parm-value to the name of the event and make an sp2-get-ocx call. Error handling -------------- Errors resulting from the use of activex controls are normally reported to the program only on a get- or set-ocx call in the form of sp2-oc-ret-code=1. Additional error information can be retrieved by making the following call at the start of your program: move low-values to sp2-oc-data move 4 to sp2-oc-options call "SP2" using sp2-set-ocx sp2-ocx-parm This will cause errors that occur during processing to be reported by means of an event (sp2-key-ocx) with the details in xxxx-menu-option as follows: ERROR=number function where number is the actual activex error code (in hexadecimal) and function is the name of the activex routine returning the error. Accessing objects within objects (collections) ---------------------------------------------- Some controls utilize a feature often called "Collection" objects. When used, a property or method is referenced that returns a pointer to an object created by the collection. The object pointed to by the collection will most likely have different methods and properties that can be accessed. The control's documentation should describe these methods and properties and ocxgen can be used to generated definitions for them. The definition of the property can also be retrieved using sp2-get-ocx with sp2-oc-get-type=1. See agent.zip and lvocx.zip for examples of handling collections. Events for collection objects can be captured by specifying the events in an sp2-get-ocx call with sp2-oc-get-type=12. To access a particular object within a collection, use the Item property to get a pointer to that object. For example, to set a property for the second item in the collection: 01 numeric-type. 10 xNumber pic s9(4) comp-5 value +0003. 10 filler pic s9(4) comp-5 value +0000. 10 filler pic s9(4) comp-5 value +0000. 10 filler pic x(4) value low-values. move low-values to sp2-oc-data move 1 to sp2-oc-id move "Columns" to sp2-oc-prop-name call "SP2" using sp2-get-ocx sp2-ocx-parm move sp2-oc-value to sp2-oc-object-ptr move 1 to sp2-oc-options move "Item" to sp2-oc-prop-name move 1 to sp2-oc-parm-cnt move 2 to sp2-oc-parm-value (1) move numeric-type to sp2-oc-parm-type (1) call "SP2" using sp2-get-ocx sp2-ocx-parm move sp2-oc-value to sp2-oc-object-ptr move "Value" to sp2-oc-prop-name move 0 to sp2-oc-parm-cnt move "whatever" to sp2-oc-value call "SP2" using sp2-set-ocx sp2-ocx-parm To retrieve a pointer to the current object use the OLEOBJECTPOINTER property: move low-values to sp2-oc-data move 1 to sp2-oc-id move OLEOBJECTPOINTER to sp2-oc-prop-name call "SP2" using sp2-get-ocx sp2-ocx-parm move sp2-oc-value to ws-object-ptr ... move ws-object-ptr to sp2-oc-object-ptr move 1 to sp2-oc-options Licensed controls ----------------- Licensed controls require that a license key be retrieved from the control on your development machine and then this key can be used to create the control on machines to which you distribute your application. To retrieve the license key make an sp2-get-ocx call with get-type=5 and the key will be returned in sp2-oc-var-data and the length of the key will be returned in sp2-oc-parm-cnt. If sp2-oc-parm-cnt=0, you do not have to worry about licensing. Once you have the key, it must be inserted as a property into sp2-fd-initial-val with a property name of "lic_key=". Running ocxgen does all this for you. Other distribution issues ------------------------- A lot of controls distinguish between "design" mode and "runtime" mode. In design mode, you can set most of the static properties for a control but you might not be able to set something like the cursor positon. Conversely, in runtime mode, you might be able to set the cursor position but you might not be able to set a static property like whether to display scrollbars or not. By default, sp2 always creates controls in design mode, sets the properties included in the field definition, then switches to runtime mode. This technique usually works fine during development but can cause a problem when you start distributing your system. Some vendors only allow their controls to be created in design mode on the development machine where the control was originally installed. If creation in design mode is attempted on another machine where only the control's runtime libraries are installed, either a messagebox is displayed or, even worse, the control is not created at all. There are two ways around this problem. The first is to create the control in runtime mode by including the following property in the field definition: sav_file=null The drawback to this solution is that properties that can only be set in design mode will no longer be set. If you need to set one of these properties, you need the second solution. This involves saving data related to the definition of the control on the development machine and using this data to load (rather than create) predefined control in runtime mode. This is done by using the same sav_file property as above but this time with a file name: sav_file=filename The file referenced by this property must be created by calling the get-ocx function with sp2-oc-get-type=7. The name of the file is taken from whatever is passed in sp2-oc-value. The ocxgen program automatically generates this file with a name of fldname.sav. The file itself should be placed in either the current directory or a directory in the path - the windows system directory is a good place for it. Out of process controls ----------------------- Some ole objects run as a separate process apart from your sp2 application. For example, Microsoft Word can be run as an ole object. Although it is possible to embed this type of object directly in your sp2 panel, it is often better to run these objects in separate windows - though still controlled by your application. To do this, use a Flexus provided ActiveX control called sp2ole. See sp2ole.zip for details of this. You can also set the run_app property to do this - see below. run_app property ---------------- This property has to be set by adding /run_app=n to the sp2 Value property. Use Icon details in the editor to do this. The following settings are supported: 1 - run the control in it's own separate window rather than imbedded in an sp2 window. 2 - create the control as another process (see above). 3 - create the control as normal but don't attempt to display it or anything. 4 - create the control as a callable dll (handler) rather than a normal object. For settings 2 through 4, your program is completely responsible for handling the control by setting properties, etc. Use the following code to get a pointer to the object just created: move low-values to sp2-oc-data move 1 to sp2-oc-id move OLEOBJECTPOINTER to sp2-oc-prop-name call "SP2" using sp2-get-ocx sp2-ocx-parm move sp2-oc-value to ws-object-ptr and then use the following prior to setting or getting properties: move low-values to sp2-oc-data move 1 to sp2-oc-id move ws-object-ptr to sp2-oc-object-ptr move 1 to sp2-oc-options Use the following to capture events for an out of process control defined by a particular interface: move low-values to sp2-oc-data move 1 to sp2-oc-id move ws-object-ptr to sp2-oc-object-ptr move 1 to sp2-oc-options move 13 to sp2-oc-get-type move 2 to sp2-oc-parm-count move event-interface-name to sp2-oc-value move first-event-name to sp2-oc-parm-value (1) move second-event-name to sp2-oc-parm-value (2) call "SP2" using sp2-get-ocx sp2-ocx-parm Using controls without registering them --------------------------------------- As an alternative to registering activex controls either manually or automatically, it is now possible to use a manifest file to specify control details - this is very useful for users who do not have the necessary privilege level to update the registry. The manifest file itself is created using a standard text editor and contains the various names and ids used to identify a control - a sample manifest file (apisimple.man) is supplied for the sp2 add-on control apisimple. The ids can be retrieved from the registry by searching for the name of the ocx file that implements the control. Once the manifest file has been defined it must be linked to the sp2 icon field that will contain the activex control by specifying its name as the value of the "man_file" property. This must be done by appending the text "/man_file=..." to the Icon details (on the Icon properties popup) for the control. For example: APISIMPLE.ApiSimpleCtrl.1/man_file=apisimple.man If you need to include a path for the manifest file because it's not in the current directory, use two back slashes instead of one: /man_file=\\mydir\\apisimple.man sp2-ocx-parm reference ---------------------- sp2-oc-id --------- The id of the ocx field. sp2-oc-options -------------- 0 - regular usage 1 - instead of using the control handle, use the object pointer passed in sp2-oc-object-ptr 2 - when using a method property, some methods return a value in sp2-oc-value. In order to properly return this value set this option. 4 - report errors via event mechanism 16 - force sp2-oc-value-type to be used on a set-ocx call rather than using the default type Add the above values together to set multiple options. sp2-oc-index ------------ Used in conjunction with sp2-oc-get-type=2,3,4,6,10 to retrieve property definitions by index rather than name. Set index to 0 to retrieve the first property, 1 to retrieve the second property, and so on. If index goes out of range, sp2-oc-prop-name will be set to low-values. sp2-oc-get-type --------------- Controls the processing done for a get-ocx call: 0 - get value of property identified by sp2-oc-prop-name 1 - get definition of property identified by sp2-oc-prop-name 2 - get definition of function-type property identified by sp2-oc-index 3 - get definition of element-type property identified by sp2-oc-index 4 - get definition of valid-value-type property identified by sp2-oc-index 5 - get license key 6 - get definition of event identified by sp2-oc-index 7 - create sav file 8 - get the parameters returned with an event 9 - get the id and name of the default interface for the object 10 - get the id and name of the interface identified by sp2-oc-index 11 - get the text associated with the last error 12 - add extra events to be trapped 13 - trap events defined by partiular interface sp2-oc-access-type ------------------ Controls how the property is accessed: 0 - regular property 1 - method property 2 - set value to be passed when an event is fired 4 - set up interface (in sp2-oc-value) to be used for future get's and set's 6 - set up an array to be used as a parameter in the next set-ocx call This item must be set properly if the function is sp2-set-ocx. This item is returned (value 0 or 1) if sp2-oc-get-type is 1,2,3,4. 4 must be used when you need access to an interface for which no object pointer is available. The format of the interface id should be: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} If necessary, create the initial object using /run_app=3 (see above). sp2-oc-parm-cnt --------------- The number of parameters used by this property. This item must be set properly if sp2-oc-get-type is 0 or the function is sp2-set-ocx. This item is returned if sp2-oc-get-type is 1,2,3,4. Also used with sp2-oc-access-type=2 (sp2-oc-parm-cnt=99) to indicate that events are to be returned immediately. sp2-oc-value ------------ Used differently depending on the function being used and the setting of sp2-oc-get-type and sp2-oc-access-type. If function is sp2-get-ocx: sp2-oc-get-type=0 - returns the current value of the property sp2-oc-get-type=1,2,3 - returns the name of the property sp2-oc-get-type=4 - returns the name of the group of valid values sp2-oc-get-type=5 - returns the license key sp2-oc-get-type=6 - returns the name of the event sp2-oc-get-type=7 - holds name of save file sp2-oc-get-type=8 - not used sp2-oc-get-type=9,10 - returns interface id sp2-oc-get-type=11 - returns error text sp2-oc-get-type=12 - not used sp2-oc-get-type=13 - name of events interface If function is sp2-set-ocx: sp2-oc-access-type=0 - holds the value to be assigned to the property sp2-oc-access-type=1 - returns the result of calling the method sp2-oc-access-type=2 - not used sp2-oc-value-type ----------------- Used differently depending on the function being used and the setting of sp2-oc-get-type and sp2-oc-access-type. If function is sp2-get-ocx: sp2-oc-get-type=0 - not used sp2-oc-get-type=1,2,3 - returns the type of the property. The 5th and 6th bytes may hold an index of a valid value group if appropriate. sp2-oc-get-type=4,5,6,7,8,9,10,11,12,13 - not used If function is sp2-set-ocx: sp2-oc-access-type=0 - holds the type of the property (only required if sp2-oc-parm-cnt is not 0 or sp2-oc-options-16 is set) sp2-oc-access-type=1,2 - not used sp2-oc-parm-value ----------------- Used differently depending on the function being used and the setting of sp2-oc-get-type and sp2-oc-access-type. If function is sp2-get-ocx: sp2-oc-get-type=0 - holds a parameter value required for retrieving the property (such as an index) sp2-oc-get-type=1,2,3 - returns the name of the parameter sp2-oc-get-type=4 - returns the name of the valid value sp2-oc-get-type=5,6,7 - not used sp2-oc-get-type=8 - value of event parameter sp2-oc-get-type=9,10 - returns interface name sp2-oc-get-type=11 - not used sp2-oc-get-type=12,13 - holds name of event to be trapped If function is sp2-set-ocx: sp2-oc-access-type=0 - holds a parameter value required for setting the property (such as an index) sp2-oc-access-type=1 - holds a parameter value required by the method sp2-oc-access-type=2 - holds a parameter value to be passed when an event fires sp2-oc-parm-type ---------------- Used differently depending on the function being used and the setting of sp2-oc-get-type and sp2-oc-access-type. If function is sp2-get-ocx: sp2-oc-get-type=0 - holds the type of the parameter sp2-oc-get-type=1,2,3 - returns the type of the parameter. The 5th and 6th bytes may hold an index of a valid value group if appropriate. sp2-oc-get-type=4 - returns the valid value sp2-oc-get-type=5,6,7 - not used sp2-oc-get-type=8 - returns type of event parameter sp2-oc-get-type=9,10,11,12,13 - not used If function is sp2-set-ocx: sp2-oc-access-type=0 - holds the type of the parameter sp2-oc-access-type=1 - holds the type of the parameter sp2-oc-access-type=2 - holds the type of the parameter sp2-oc-object-ptr ----------------- Holds a pointer to a collection object. See agent.zip and lvocx.zip for usage. sp2-ocx-parm-l -------------- Use this version of sp2-ocx-parm if you need to pass values longer than 8k to or from a control: *copy "sp2ocxl.cpy". 01 SP2-OCX-PARM-L. 05 SP2-OC-RET-CODE PIC S9(4) COMP-5. 05 SP2-OC-LENS. 10 SP2-OC-LEN-LEN PIC S9(4) COMP-5 VALUE +50. 10 SP2-OC-NUM-LEN PIC S9(4) COMP-5 VALUE +12. 10 SP2-OC-CHAR-LEN PIC S9(4) COMP-5 VALUE +110. 10 SP2-OC-VAR-LEN PIC S9(4) COMP-5 VALUE +1890. 10 SP2-OC-VALUE-LEN PIC S9(4) COMP-5 VALUE +80. 10 SP2-OC-TYPE-LEN PIC S9(4) COMP-5 VALUE +10. 10 FILLER PIC S9(4) COMP-5 VALUE +0. 10 SP2-OC-LENL-LEN PIC S9(4) COMP-5 VALUE -1. 10 SP2-OC-NUML-LEN PIC S9(4) COMP-5 VALUE +0. 10 SP2-OC-VAR-LEN-L PIC S9(8) COMP-5 VALUE +0. 10 SP2-OC-VALUE-LEN-L PIC S9(8) COMP-5 VALUE +0. 10 SP2-OC-PARM-LEN-LEN-L PIC S9(8) COMP-5 VALUE +20. 10 SP2-OC-PARM-LEN-1-L PIC S9(8) COMP-5 VALUE +0. 10 SP2-OC-PARM-LEN-2-L PIC S9(8) COMP-5 VALUE +0. 10 SP2-OC-PARM-LEN-3-L PIC S9(8) COMP-5 VALUE +0. 10 SP2-OC-PARM-LEN-4-L PIC S9(8) COMP-5 VALUE +0. 10 SP2-OC-PARM-LEN-5-L PIC S9(8) COMP-5 VALUE +0. 05 SP2-OC-DATA. 06 SP2-OC-NUM-DATA. 10 SP2-OC-ID PIC S9(4) COMP-5. 10 SP2-OC-OPTIONS PIC S9(4) COMP-5. 10 SP2-OC-INDEX PIC S9(4) COMP-5. 10 SP2-OC-GET-TYPE PIC S9(4) COMP-5. 10 SP2-OC-ACCESS-TYPE PIC S9(4) COMP-5. 10 SP2-OC-PARM-CNT PIC S9(4) COMP-5. 06 SP2-OC-CHAR-DATA. 10 SP2-OC-PROP-NAME PIC X(80). 10 SP2-OC-OBJECT-PTR PIC X(30). 06 SP2-OC-VAR-DATA. 10 SP2-OC-VALUE PIC X(80). 10 SP2-OC-VALUE-TYPE PIC X(10). 10 SP2-OC-PARMS. 11 SP2-OC-PARM OCCURS 20. 15 SP2-OC-PARM-VALUE PIC X(80). 15 SP2-OC-PARM-TYPE PIC X(10). ****** 06 SP2-OC-VAR-DATA-L. ******** 10 SP2-OC-VALUE-L ***** ******** 10 SP2-OC-PARM-1-L **** ******** 10 SP2-OC-PARM-2-L **** ******** 10 SP2-OC-PARM-3-L **** ******** 10 SP2-OC-PARM-4-L **** ******** 10 SP2-OC-PARM-5-L **** Uncomment sp2-oc-value-l, sp2-oc-parm-1-l, etc. as needed and set sp2-oc-var-len-l, sp2-oc-value-len-l, sp2-oc-parm-1-l, etc. as appropriate. If set, these items will be used instead of sp2-oc-value, sp2-oc-parm-value (1), etc. ocxgen ------ Use the ocxgen.cbl program to get the definitions of all the properties for that control. The program uses the sp2-get-ocx function with sp2-oc-get-type=2,3,4,5,6,7,9, and 10 to retrieve the definitions of the function, element and value properties associated with a control. The definitions are saved to a .cpy file with the name of the icon field or "ocxid???" if the field is not named (??? is the id of the field). This program also uses sp2-oc-get-type=5 to check if the control is licensed (see licensed controls above). Function and element properties are generated in the following form: 01 fieldname-property. 05 property-prop-name pic x(30) value "????????". 05 property-access-type pic s9(4) comp-5 value +?. 05 property-parm-cnt pic s9(4) comp-5 value +?. 05 property-value-type. 10 type-1 pic s9(4) comp-5 value +?. 10 type-2 pic s9(4) comp-5 value +?. 10 filler pic s9(4) comp-5 value +?. 10 filler pic x(4) value low-values. 05 property-parms. 10 property-parm-1 pic x(80). 10 property-parm-1-type. 15 type-1 pic s9(4) comp-5 value +?. 15 type-2 pic s9(4) comp-5 value +?. 15 filler pic x(6) value low-values. 10 property-parm-2 pic x(80). 10 property-parm-2-type. 15 type-1 pic s9(4) comp-5 value +?. 15 type-2 pic s9(4) comp-5 value +?. 15 filler pic s9(4) comp-5 value +?. 15 filler pic x(4) value low-values. etc. Use these generated values to set the items in sp2-oc-data (see ocx.cbl for a simple example of this). property-parms will only be generated if property-parm-cnt is greater than 0. The type-1 and type-2 items are actually generated with a name that indicates the actual type of the value or parameter, as follows: xEmpty - Empty (Unused) xNull - Null - as opposed to empty, a null value xInteger - positive or negative whole number, corresponds to an INT data type in C xLong - positive or negative whole number corresponds to a LONG data type in C xSingle - single character numeric item (0-255) xDouble - Same as a LONG - it's a Double Word numeric value xCurrency - a number with two positions after the decimal point xDate - xString - Character String (Could include binary data) xObject - An Object Pointer xBoolean - 1 means true, anything else means false xVariant - A string of data (Could include binary data) xIUnknown - An IUnknown OLE interface xDecimal - Number with decimals xSgndByte - A single byte numeric item, signed - +/- 127. xByte - A single Byte xUnsShort - A numeric value corresponding to the C data type Unsigned Short xUnsLong - A numeric value corresponding to the C data type Unsigned Long xSgnLong - A numeric value corresponding to the C data type Signed Long xLongLong - A numeric value corresponding to the C data type LongLong - (Two concatenated long values) xSgnInt - Signed Integer (Corresonding to the C data typpe Int) xUnsInt - Unsigned Integer (Corresponding to the C data type UNS int) xHRESULT - Numeric value representing a windows HRESULT data type xpointer - Pointer value xUserDef - Anything (User Defined) xLPSTR - Pointer to a string xLPWSTR - Pointer to a wide (double byte) string xFILETIME - Windows Filetime data structure (numeric) xBLOB - Binary Large Object xSTREAM - Data Stream xCLSID - Class ID xUserDef - normally you can look at the generated valid values. The value that follows the type-2 item can be used as an index into the valid values. Valid value properties are generated in the following form: 01 fieldname-valuegroup. 05 filler pic s9(4) comp-5 value +?. 05 value-1 pic x(10) value "?". 05 value-2 pic x(10) value "?". 05 value-3 pic x(10) value "?". etc. Use these values to set sp2-oc-prop-value if type-1 or type-2 in the function or element definition is xUserDef. The filler at the start of the list is the index of this value group. Events are generated in the following form: 01 fieldname-event. 05 event-event-name pic x(30) value "?". Remember that this value will be returned in panel-menu-option if panel-key is sp2-key-ocx. The ocxgen application consists of ocxgen.cbl, a panel file and several copybooks. It is distributed inside OCXGEN.ZIP. It is interactive, allowing you to choose the panel file, panel and specific fields within the panel for which you need definitions generated. ENVYR Notes: 1. A pre-compiled ocxgen.cx has been provided that can be used without compiling the program. 2. Ocxgen supports only a screen interface and only generates card format files. A program "card2crt.exe" is included that can be used to convert card format source to crt format source. The process works as follows: When you start OCXGEN a button will allow you to choose a panel file from the file open dialog. Once you choose a panel file, a list of panels within that panel file will be displayed. When you chose a panel, another list box will appear showing the field numbers, names and class names of any controls used in the panel. This is a multi-select list box so you may choose a single field or many for copybook generation. There are several check boxes available that control the generation of the copybook. Shorten COBOL names to 30 Characters - Some compilers enforce the COBOL data name limitation of 30 characters. This means that for most controls, which use fairly verbose names, the 30 character name limit is exceeded. By checking this box OCXGEN will "Shorten" the COBOL data names to fit within 30 characters. A very advanced routine is used, developed and graciously provided by Jeff Spalding, which shortens the names such that they are still readable and understandable. Comment Shortened Names - if selected, this option will cause OCXGEN to insert comments in the copybook showing the full name before it was shortened and indicating that name shortening occurred. Use Qualification Method of Names - Normally names are generated as follows: 01 fieldname-property. 05 property-prop-name pic x(30) value "????????". 05 property-access-type pic s9(4) comp-5 value +?. 05 property-parm-cnt pic s9(4) comp-5 value +?. 05 property-value-type. 10 type-1 pic s9(4) comp-5 value +?. 10 type-2 pic s9(4) comp-5 value +?. 10 filler pic s9(4) comp-5 value +?. 10 filler pic x(4) value low-values. However - this can lead to very long names, and end up with very severly truncated names if the name shortening option is utilzied. Setting the option for using the Qualification method for names causes the generation to appear as follows: 01 fieldname-property. 02 OLE-Property. 05 prop-name pic x(30) value "????????". 05 access-type pic s9(4) comp-5 value +?. 05 parm-cnt pic s9(4) comp-5 value +?. 05 value-type. 10 type-1 pic s9(4) comp-5 value +?. 10 type-2 pic s9(4) comp-5 value +?. 10 filler pic s9(4) comp-5 value +?. 10 filler pic x(4) value low-values. This leads to less manipulation of data names and gives enhances the self documentation of the code as follows: MOVE PROP-NAME of OLE-Property to SP2-oc-prop-name This utilizes name qualification in COBOL. Even if you don't use this feature there is a chance for duplication names in generated data values from OCXGEN which may require you to use qualification in your programs. Generate All Interfaces - previously OCXGEN would only return the information for the base interface of a control. Using this option, all interfaces for the control are generated, even those that require the creation of another object by the control for use within the control. You may need to customize Ocxgen for your compiler. See the comments in the program itself to select appropriate copybooks. If you have any problem getting OCXGEN to work with your COBOL compiler, please let us know at: techsupport@flexus.com ---------------------- Additional Examples SP2WORD.ZIP includes examples for MS Word automation SP2EXCEL.ZIP includes examples for MS Excel automation Debugging Notes --------------- SP2 and QPR provide a debugging feature that dumps a trace file. These are activated via the SP2DBG= and QPRDBG= environment variables. Values 1 thru 5 can be used to selectively add trace information. 5 (the highest) should be used for crashes as it will also dump a file called uib.dbg that can be provided for support purposes. The created trace files are called SP2DBG.xxx and QPRDBG.xxx. Flexus Provided COBOL Programs ------------------------------ All Flexus COBOL programs are in Card format. 1. For SP2: BITMAP CBL BITMAP2 CBL BITMAP3 CBL CHILDREN CBL COMBOBOX CBL DBLEDISP CBL EXAMPLE CBL FILELIST CBL MENUMOD CBL MULTIPAN CBL OCXM CBL REPEAT CBL REPEAT2 CBL SCROLWIN CBL SP2DYNAM CBL SP2GLOB CBL SP2GLOBE CBL (ENVYR derived from SP2GLOB) SP2MAINT CBL SP2VER CBL TABS CBL THIN3D CBL TOOLBAR CBL TREEVIEW CBL VBXTEST CBL VBXTEST4 CBL 2. For QPR: CHGBMP CBL CHGFORM CBL DEMOFORM CBL GRIDLINE CBL NEWFORM CBL ENVYR Demo Programs --------------------- All ENVYR Demo Programs are in CRT format. 1. SP2 Demo program (SP2LOGON.SR). The sp2logon.sr program is meant as an example program demonstrating how the functions of the logon.sr program can be performed using ICSP2 to build a GUI interface. The program was adapted from logon.sr. The two programs can be compared to learn how an existing program might be modified to use SP2. Users should feel free to experiment with the program and the panel file (while keeping backups of the original versions, of course). Some of the things the program does: - shows 2 different ways a file might be listed using SP2, including repeat group processing - demonstrates how selecting one option on a screen can cause other options to become unaccessible - demonstrates modification of a window prior to display - demonstrates use of tab windows - demonstrates dynamic building of a list box - use of push buttons, radio buttons, check boxes, list boxes, combo boxes Since this is an example program, let it be clear that there are several things about it that should NOT be emulated. For example, a real application using SP2 would strive to present a common look and feel to the user. The sp2logon program does not make a priority of this, since it is meant as an example. Also, a real application would probably not use the program window for some output and SP2 windows for the rest. Sp2logon does this when running such utilities as the Printer Control utility, since these are implemented as built-ins which expect to operate in the program window. Since sp2logon is meant to be an example, those built-ins have not been modified to work with SP2 windows. Finally, the generated copy files produced by ICSP2 have been incorporated into sp2logon rather than referenced by COPY statements. This was done strictly for convenience, to make it easier to manage on the release. The correct way is to use the COPY statement to include each generated copy file so that the program does not have to be modified each time a panel is modified. NOTE: This program can be crashed by using the Run Cobol Program option to CALL an ICOBOL program which makes an SP2-END-SESSION call. That will terminate the SP2 session in the CALLed program, but when control returns to sp2logon, trying to access SP2 functions will cause a GPF. An application using SP2 must be carefully structured so only one SP2-END-SESSION call is made. Obviously, since the user can call any Cobol program from sp2logon, it is possible to cause this sort of problem from the test program. In general, ICOBOL SP2 programs should NOT do an END-SESSION call and allow the ICOBOL runtime to generate one when it terminates. The files included with this example for sp2logon are: sp2logon.sr The source file sp2logon.cx The compiled executable sp2logon.pan The ICSP2 panel file sp2logon.ico An SP2 icon. For pcqutil: pcqutil.sr The source file pq_list.ws copy files pqfilter.ws copy files pcqutil.cx The compiled executable pcqutil.pan The ICSP2 panel file To execute these you need: sp2logon.cx The compiled executable sp2logon.pan The ICSP2 panel file sp2logon.ico An SP2 icon. pcqutil.cx The compiled executable pcqutil.pan The ICSP2 panel file (note that sp2logon.cx uses icreog) Setting SP2OWD=640 and SP2OHT=480 will scale the panel as it was designed orginally for an 640x480 screen. Running sp2logon requires an ICSP2RUNTIME license. 2. FormPrint Demo program (FPDEMO.SR). FPDEMO.SR - FORMPRINT (QPR) DEMO PROGRAM The FormPrint demo program (fpdemo.sr) shows many of the features and capabilities of FormPrint. It uses SP2 to provide the interface for the demonstration, so it provides some examples of SP2 use as well. The FormPrint demo package is composed of the fpdemo.sr demo program, the fpdemo.pan panel file holding the SP2 panels used by fpdemo.sr, the qprdemo.pan panel file holding the QPR panels used by the examples, and fpdemo.sp2 that provides help for the demo. The demo program was written such that it does not require either fonts.sp2 or fonts.qpr to run. fpdemo has three optional switches: /s - create or modify fonts.sp2, writing fonts used by the demo to the file /q - create or modify fonts.qpr, writing fonts and possibly a color used by the demo to the file /n - print mailing labels on the default printer without user interaction (added in 4.11) If a fonts switch is set and its associated fonts file exists, a warning dialog allows the user to prevent modification of the file. These switches are provided in case the user wants to load the demo's SP2 and/or QPR panels into the appropriate editor. In that event, a fonts.xxx file would be needed. To keep the demo package compact, the program hard-codes the panel copy files which normally are referenced by COPY statements; the COPY statements are there but commented out. The program offers several examples of output. The user selects an example, selects a printer, and then prints the output, previewing it on the screen if desired. The available examples are: * Mailing labels - uses a form which defines multiple areas suitable for address labels. * Inventory report - uses a form defining a simple report * Multiple forms - uses two forms to build the output page in memory before printing it * Change bitmap - uses the inventory form; changes the bitmap used at the top of the page. * Change font - uses the inventory form; changes the font used in the INVREPT-YEAR-END-REPORT field * Change color - uses the inventory form; changes the color used in the INVREPT-YEAR-END-REPORT field The program shows numerous QPR techniques, including: * How to select the default printer * How to select a printer by invoking a Windows dialog box * How to selecting a printer by using QPR to fetch an internal list of printers; SP2 is then used to present the list to the user for a selection * How to select a specific printer when its name is known without making two qpr-select-printer calls * How to define QPR functions which are not defined in the Flexus distribution files * How to drive Windows color dialogs to allow the user to make a color selection * How to define colors and fonts with QPR; how to apply the change to fonts.qpr * How to change a bitmap, font, or color * How to invoke print preview * How to program for get-all-pages and next-page selections when preview is operating * How to handle the requirement that qpr-init and qpr-select be re-executed after qpr-end-print * Suggested error-checking when using QPR The files included with this example are: fpdemo.sr The source file fpdemo.cx The compiled executable fpdemo.pan Screen panel file fpdemo.ico Printer Icon file fpdemo.sp2 Help file qprdemo.pan The printer panel file formprnt.bmp Bitmaps for print outs yacht3.bmp " To execute this you would need: fpdemo.cx The compiled executable fpdemo.pan The screen panel file fpdemo.ico Printer Icon file fpdemo.sp2 Help file qprdemo.pan The panel file formprnt.bmp Bitmap for print out yacht3.bmp Bitmap for print out qprdemo.ico Icon file for the print Preview qprtoolb.bmp Bit map for the Print Preview screen Running fpdemo requires an ICSP2RUNTIME license. End of Readsp2