Date: 01-09-2015
Subject: RELEASE 9.7A Runtime Files
These release notes pertain to the following programs or files:
EMBEDINI 9.7A 09 Jan 2015 9,7,1,500
EMBEDINI64 9.7A 09 Jan 2015 9,7,1,500
HEXDUMP 9.7A 09 Jan 2015 9,7,1,500
HEXDUMP64 9.7A 09 Jan 2015 9,7,1,500
MAKECLI 9.7A 09 Jan 2015 9,7,1,500
MAKECON 9.7A 09 Jan 2015 9,7,1,500
MAKECONET 9.7A 09 Jan 2015 9,7,1,500
MAKEDEF 9.7A 09 Jan 2015 9,7,1,500
MAKEMFD 9.7A 09 Jan 2015 9,7,1,500
MANAGECE 9.7A 09 Jan 2015 9,7,1,500
OBJMATCH 9.7A 09 Jan 2015 9,7,1,500
OBJMATCH64 9.7A 09 Jan 2015 9,7,1,500
ODBCINST64 9.7A 09 Jan 2015 9,7,1,500
PLBCGI 9.7A 09 Jan 2015 9,7,1,500
PLBCLICON 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6)
PLBCLIENT 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6)
PLBCLINET 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6)
PLBCON 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6)
PLBCONET 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6)
PLBDSIGN 9.7A 09 Jan 2015 9,7,1,500
PLBNET 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6)
PLBSERVE 9.7A 09 Jan 2015 9,7,1,500 (Processed Server)
PLBSERVET 9.7A 09 Jan 2015 9,7,1,500 (Threaded Server)
PLBWEBSRV 9.7A 09 Jan 2015 9,7,1,500 (Processed Server)
PLBWEBSRVT 9.7A 09 Jan 2015 9,7,1,500 (Threaded Server)
PLBWIN 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 6)
SETGUID 9.7A 09 Jan 2015 9,7,1,500
SUNAAMDX 9.7A 09 Jan 2015 9,7,1,500
SUNAAMDX64 9.7A 09 Jan 2015 9,7,1,500
SUNINDEX 9.7A 09 Jan 2015 9,7,1,500
SUNINDEX64 9.7A 09 Jan 2015 9,7,1,500
SUNLS 9.7A 09 Jan 2015 9,7,1,500
SUNMOD 9.7A 09 Jan 2015 9,7,1,500
SUNMOD64 9.7A 09 Jan 2015 9,7,1,500
SUNSORT 9.7A 09 Jan 2015 9,7,1,500
SUNSORT64 9.7A 09 Jan 2015 9,7,1,500
WININST 9.7A 09 Jan 2015 9,7,1,500
PLBCLICON5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5)
PLBCLIENT5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5)
PLBCLINET5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5)
PLBCON5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5)
PLBCONET5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5)
PLBNET5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5)
PLBWIN5 9.7A 09 Jan 2015 9,7,1,500 (ComCtl 5)
ODSBAC32.DLL 9.7A 09 Jan 2015
ODSBAC64.DLL 9.7A 09 Jan 2015
PLBNETSUP.DLL 9.7A 09 Jan 2015 9,7,1,500 Required for PLBNET
PLBWSEC.DLL 9.7A 09 Jan 2015 9,7,1,500 Req'd PLBWIN/PLBNET
SA_DLL32.DLL 9.7A 09 Jan 2015 9,7,1,500
SUNWADO.DLL 9.7A 09 Jan 2015 9,7,1,500
SUNWADO25.DLL 9.7A 09 Jan 2015 9,7,1,500
SUNWADO28.DLL 9.7A 09 Jan 2015 9,7,1,500
SUNWMSQL.DLL 9.7A 09 Jan 2015 9,7,1,500
SUNWODBC.DLL 9.7A 09 Jan 2015 9,7,1,500
SUNWSRV.DLL 9.7A 09 Jan 2015 9,7,1,500
DBEXPLORER.PLC 9.7A 09 Jan 2015
DBGIFACE.PLC 9.7A 09 Jan 2015
DESIGNER.PLC 9.7A 09 Jan 2015
EDITOR.PLC 9.7A 09 Jan 2015
PLBCMP.PLC 9.7A 09 Jan 2015
PLBDBUG.PLC 9.7A 09 Jan 2015
PROFILER.PLC 9.7A 09 Jan 2015
SCHEMAEDITOR.PLC 9.7A 09 Jan 2015
SUNIDE.PLC 9.7A 09 Jan 2015
WATCH.PLC 9.7A 09 Jan 2015
ADMEQU.INC 9.7A 09 Jan 2015
PLBEQU.INC 9.7A 09 Jan 2015
PLBMETH.INC 9.7A 09 Jan 2015
PLBCLI.ZIP 9.7A 09 Jan 2015 9,7,1,600 (ComCtl 6)
PLBRUN.ZIP 9.7A 09 Jan 2015 9,7,1,600 (ComCtl 6)
*==============================================================================
Notes for DOCUMENTATION:
- In the PL/B Language Reference manual under the 'IO using SQLite'
section, change the 'element_count' description for the
'sun_columns' table to read as follows:
element_count
"This column is a number that gives the number of sequential fields
assigned to this PL/B field definition. The minimum allowed
value is one (1). If the element_count value is greater than
one, this value corresponds to a PL/B array with an array
element count of this size. The SQL data type for this column is
'integer'"
- In the PL/B Web Server Reference manual, change the PLBWEB_DEFAULT
keyword description to read as follows:
PLBWEB_DEFAULT={ [ PlcProgName | WebPageName] }
This keyword specifies the default PLB program name or a HTML webpage
file to be executed when a PL/B Web client initiates a logon request that
does not have anything specified in the URL logon request string. If this
keyword is not specified or this keyword is assigned to be null, the PL/B
Web Server runtime locates and executes the ‘answer.plc’ applying the
normal PL/B Answer\Master concept.
Note:
1. The {PlcProgName} program name MUST include the extension and the
name is case sensitive.
2. The {PlcProgName} program name can begin with a relative
sub-directory to the OS directory specified by the
PLBWEB_PROGRAM_ROOT keyword. The {PlcProgName} cannot contain a
fully qualified OS path.
3. If the PLBWEB_PROGDD keyword is set to an ‘off’ state, the
{PlcProgName} may not contain any path information. Otherwise, the
program may not be executed. When the PLB_PROGDD keyword is set to
‘off’, this configuration prevents unsolicited probing by malicious
logon requests.
4. Alternatively, the PLBWEB_DEFAULT can specify the file name of a
Web Page that is to be downloaded to a client browser when a PL/B
Web client initiates a logon request that does not have anything
specified in the URL logon request string.
Example:
PLBWEB_DEFAULT=demo.html
PLBWEB_DEFAULT=index.html
- In the PL/B Runtime Reference manual under the 'PLB_FNC Keyword'
description, add notes as follows:
Note:
1. If the PLB_FNC keyword is not used, the default behavior of a
Windows runtime is to convert the file names to lower case.
2. If the PLB_FNC keyword is not used, the default behavior of a
Linux\Unix runtime is to leave file names unmodified resulting
in case sensitive file names.
- In the PL/B Language Reference manual under the 'TITLE Property' note
descriptions, change the following notes to read as follows:
"Note:
7. When using the PL/B Web Server, the TITLE property is supported
for all PL/B objects as normally expected. However, the TITLE
property for a WINDOW object is restricted to only be shown
in a WINDOW that has a titlebar. The WINDOW object with a
WINTYPE of $MODAL and $MODELESS have a titlebar which allows
the TITLE property data string to be shown. For all other
WINDOW WINTYPE values, the TITLE property is not shown since
there is titlebar."
- In the PL/B Language Reference under the 'Menu Special Characters'
descriptions, add a notes section with the following note:
"Note:
1. When using the PL/B Web Server, there is no support for Menu
special characters. All special characters are removed from
PL/B menu strings and ignored."
- In the PL/B Language Reference under the 'CREATE COMBOBOX' notes, change
the following note description:
"Note:
3. If {menu} is specified by a character string contained in a
character variable or character literal, special characters
are allowed that help define the menu. However, when using a
PL/B Web server runtime, all {menu} special characters are
removed and ignored without being displayed."
- In the PL/B Language Reference manual under the 'COPYFILE' notes, change
the following description:
Note:
27. When using the PL/B Web Server, server side only copies are
supported. In Addition, the COPYFILE instruction can be used
to copy files from a client browser system that have been
selected by an end-user 'File Upload' selection dialog. See
the BUTTON 'BUTTONTYPE=$FILEINPUT' property for details for
allowing client browser side file selections by an end-user.
The {source} file name contains a leading '!' character to
indicate that the source file is located on the client
browser system. The {source} must be the file name returned by
the BUTTON 'GetFileItem' method.
28. When using the PL/B Web Server, a special COPYFILE {source}
file name syntax has been implemented to provide a file array
index. The file array is created when an end-user selects
multiple files to be uploaded using the 'File Upload' selection
dialog. In this scenario, a file array index is required to
identify which file is to be copied. The file array index
syntax is described as follows:
{source} file array syntax:
!(nnn)(filename)
Where:
'!' is required to identify that the source
file is located on the client browser
system.
(nnn) is a zero-based index decimal value.
(filename) must be the file name returned by the
BUTTON 'GetFileItem' method.
Example of 2 file selected by end-user:
COPYFILE "!(0)image.jpg", "c:\temp\image0.jpg"
COPYFILE "!(1)image.jpg", "c:\temp\image1.jpg"
Note, that is some client browser environments
there is NO underlining file directory structures
like for an IPAD. In this case, selected files
by an end-user can be returned by the client
browser with the same filename which is NOT
unique for each file name selected.
- In the PL/B Language Reference manual under the 'LoadXMLFile Method'
section make the following changes to the Notes:
Note:
7. A return value of zero (0) indicates success. Failures return
one of the values described as follows:
Value Meaning ...
1 A write operation has already been started
2 Unable to create specified XML file
3 Unable to open specified XML file
4 Unable to create XML parser
5 Out of memory
6 Attempt to write an attribute on an closed element
7 Tag name too long
8 Invalid tag name
9 XML data too large
10 XML file too large for memory area
11 File write error
12 Internal state error
13 No element open
14 Internal state error
15 Attribute not open
16 Error detected parsing XML data file.
200 Unable to retrieve XML file from Application Server
201 The ListView has no Columns or there is insufficient
memory to process Columns.
- In the PL/B Language Reference manual under the 'SaveXMLFile Method'
section make the following changes to the Notes:
1. Replace the current Note (2.) with the current Note (9.).
2. I want to eliminate the reference to the I83 error.
- In the PL/B Language Reference manual under the 'ALERT' instruction
section change the following notes:
Note:
7. For multi-line alert messages, a 0x7F character separates
lines within the text by replacing the 0x7F with an
appropriate character sequence applicable for the client UI:
Windows - 0x7F is replaced a CR followed by a LF
character sequence.
Client Browser - 0x7F is replaced by a "" tag sequence.
10. The alert message is limited to a length of 255 characters.
This 255 character limit includes the expanded 0x7F character
sequences as described in Note (7.) above.
- In the PL/B Language Reference manual under the 'REPOSIT' instruction
section, add the Note (4.) as follows:
Note:
4. The {offset} value is larger than '0x3fffffffffffffff', the
{offset} maximum of '0x3fffffffffffffff' is used. This maximum
limit is being applied to avoid unexpected OS errors due to
OS limitations. Notice, if the {offset} is a FORM variable with
a negative value, the FORM variable is converted to an integer
value which is used as the absolute file position. Therefore,
on a 32-bit platform, a FORM variable with a '-1' value converts
to a 32-bit integer value of '0xFFFFFFFF'. Likewise, on a 64-bit
platform, a FORM variable with a '-1' value converts to a
64-bit integer value of '0xffffffffffffffff'.
- In the PL/B Language Reference manual under the 'HTTP' instruction
section, make the following changes for the Note (3.):
1. Modify the *FLAGS $HTTP_FLAG_RAW_RESULT to read as
follows:
" 0x00000020 - $HTTP_FLAG_RAW_RESULT -The entire unedited
response received for a HTTP request is returned in the
result. (9.5B) In this case, the PL/B runtime does not
process nor interpret any of the Web Server response."
2. Modify the *HTTPLENGTH option to read as follows:
"a Numeric Variable that returns the value as specified by
the 'Content-Length:' field that is returned in the HTTP header.
If the value to be stored in the {nvar} is too large and must
be truncated, the OVER flag is set. This option is ignored
when the *FLAGS $HTTP_FLAG_RAW_RESULT is used."
3. Modify the *HTTPRESULT option to read as follows:
"a Character String Variable that only receives the result that
was sent by the web server as a response to the HTTP command. A
normal expected result may be a string '200 OK'. The EOS flag
is set if the data stored into the {svar} is too large and it
has to be truncated. This option is ignored when the *FLAGS
$HTTP_FLAG_RAW_RESULT is used."
4. Modify the *HTTPTYPE option to read as follows:
"a Character String Variable that only receives the result that
was sent by the web server as a response to the HTTP command. A
normal expected result may be a string '200 OK'. The EOS flag
is set if the data stored into the {svar} is too large and it
has to be truncated. This option is ignored when the *FLAGS
$HTTP_FLAG_RAW_RESULT is used."
- In the PL/B Language Reference manual under the 'CREATE PICT' section,
change the Note (6.) table to include the following:
0x5 - JPG
- In the PL/B Language Reference manual under the 'CUSTOMFORMAT Property'
section, change the following:
A. Change the Note (5.) to read as follows:
"Date and time format elements are replaced by the actual date and
time. They are defined by the following groups of characters as
required by the Windows OS DateTimePicker control:"
B. Add a Note (6.) which reads as follows:
"Date elements are replaced by the actual date. They are defined by
the following groups of characters as required by the jQuery
Datepicker Widget control:"
"Date elements are replaced by the actual date. They are defined by
the following groups of characters when executing using the PL/B
Web Server. In this case, these date elements are automatically
translated from Windows OS formats to jQuery Datepicker Widget
control formats."
Element Description
These date format string sequences are the same as expected
for the Windows OS DateTimePicker control. These format
string fields are translated to the format string fields
expected for the jQuery DatePicker control when using the
PL/B Web Server.
d - The one or two-digit day.
dd - The two-digit day. Single-digit day values are
preceded by a zero.
ddd - The three-character weekday abbreviation.
dddd - The full weekday name.
M - The one or two-digit month number.
MM - The two-digit month number. Single-digit values
are preceded by a zero.
MMM - The three-character month abbreviation.
MMMM - The full month name.
yy - The last two digits of the year (that is, 1996
would be displayed as "96").
yyyy - The full year (that is, 1996 would be displayed
as "1996").
Not translated for PL/B Web Server EDITDATETIME object:
If these character sequences are specified\exist in the
'CUSTOMFORMAT' format string, they are not translated and
they remain in the format string sent to the client browser
jQuery DatePicker control.
h - The one or two-digit hour in 12-hour format.
hh - The two-digit hour in 12-hour format.
Single-digit values are preceded by a zero.
H - The one or two-digit hour in 24-hour format.
HH - The two-digit hour in 24-hour format.
Single-digit values are preceded by a zero.
m - The one or two-digit minute.
mm - The two-digit minute. Single-digit values are
preceded by a zero.
t - The one-letter AM/PM abbreviation (that is, AM is
displayed as "A").
tt - The two-letter AM/PM abbreviation (that is, AM is
displayed as "AM").
C. Add a Note (7.) which reads as follows:
"When using the PL/B Web Server, the CUSTOMFORMAT property is not
supported when the PL/B EDITDATETIME FORMAT property is set to
$DTFORMATTIME."
- In the PL/B Runtime Reference Manual, change the I72 error description to
read as follows:
I72 Simple COPYFILE I72 Error:
"When using the simple syntax form, the error sub code is the
OS code values as described in the 'I/O Error Sub-codes'
section for additional error subcode information."
Enhanced COPYFILE I72 Error:
"When using the complex (enhanced) syntax, error subcodes
provide additional information as follows:
1: Unable to open the {source} file.
2: ...etc"
- In the PL/B Runtime Reference Manual, change the Notes to read as
follows:
Note 7.
Value Keyword The third state is...
0 $ON disabled.
1 $OFF enabled
2 $AUTOTRISTATE enabled auto mode
Note 9.
9. When the AUTO TRISTATE mode is being used, the CHECKBOX object
is set to a style which causes the Windows OS to automatically
change that CHECKBOX states to 'checked', 'indeterminate', and
'unchecked' by user click actions. This automatic state change
by the Windows OS always occurs and is reflected before any
PLB user event is executed. Therefore, the PLB user program
does not have to track and change the CHECKBOX states.
- In the PL/B Runtime Reference manual under the 'M(MailSend) Errors'
section, add the following error information:
Mnn
Value Operand
20 *OPENSSL option.
21 *ERRORLIST option.
22 *STARTTLS option.
sss
50 Email Server 220 Ready not received after 'STARTTLS'
command.
- In the PL/B Language Reference manual under the MAILSEND instruction
add the following *STARTTLS option in the Note (3.).
Note:
3. *STARTTLS - This option is used to invoke a SMTP extension
to use TLS (Transport Layer Security) which
provides private and authenticated communications.
This option first accesses an email server using
unsecured communications to received the server
configuration. If the server configuration is
set to support STARTTLS, the MAILSEND
establishes a SSL secured connection before
continuing to send the email message. The
*OPENSSL and the *STARTTLS options CAN NOT
be used in the same MAILSEND instruction.
- In the PL/B Language Reference manual under the 'Click Event' section,
add the following Note (9.).
Note:
9. The Click Event is generated for a DATALIST object when a
left mouse click action or when a keypress action ( up arrow,
down arrow, left arrow, right arrow, home, end, page-up, or
page-down ) is taken. Also, the event modifier value for the
Click Event is set to a value of zero when a left mouse click
action generates the event. The event modifier value is set
to a value of 1 if the Click Event was generated by a keypress
action.
- In the PL/B Language Reference manual, add the RUNTIME object description
as follows:
-----------------------------------------------------------------------
RUNTIME PLB Web Only, 9.7A
The RUNTIME instruction provides access to the web server allowing a
program to retrieve information about the runtime environment. To
define a RUNTIME, use the following statement format:
(1) [label] RUNTIME [%]
(2) [label] RUNTIME (arraysize)
(3) [label] RUNTIME ^
(4) [label] RUNTIME ^,{target}
(5) [label] RUNTIME ^(arraysize)
(6) [label] RUNTIME ^(arraysize),({target}),...,({target})
(7) [label] RUNTIME
Where:
label
Optional. A Program Execution Label.
%
Optional. Denotes the item as being GLOBAL.
arraysize
Required. An integer decimal constant, CONST variable, or EQUATEd
value indicating the number of array items.
^
Optional. Denotes the item as being a POINTER.
target
Required. The name of a previously defined data item of the same
type.
Flags Affected: NONE
Note the following:
1. The RUNTIME object represents the server's runtime component.
2. There are no properties for a RUNTIME object.
3. There are no events for a RUNTIME object.
4. There are no GUI PL/B instructions other than GUI methods that are
used with a RUNTIME object.
Events: NONE
Properties: NONE
Methods:
GetDir Method (RUNTIME)
See description below for Details
- In the PL/B Language Reference manual in the VARIANT section, change the
Note (5.) to read as follows:
Note:
5. When using the PL/B Web Server, this object is created and
supported as a server side object. This object is NOT available
nor used at the client browser.
- In the PL/B Language Reference manual in the SetItemState Method
(LISTVIEW) section, modify the Note (1.) to include the following
description after the state value table:
"When using the PL/B Web Server, only the LVIS_FOCUSED and
LVIS_SELECTED state values are supported. Any other LVIS state
values are meaningless and not used."
- In the PL/B Language Reference manual in the GetItemState Method
(LISTVIEW) section, modify the Note (1.) to include the following
description after the state value table:
"When using the PL/B Web Server, only the LVIS_FOCUSED and
LVIS_SELECTED state values are supported. Any other LVIS state
values are meaningless."
- In the PL/B Language Reference manual in the GetItemState Method
(LISTVIEW) section, modify the Note (1.) to make the LVIS_CUT
and LVIS_DROPHILITED descriptions to read as follows:
Value Constant The item ...
0x4 LVIS_CUT is marked for a cut-and-paste
operation.
0x8 LVIS_DROPHILITED is highlighted as a drag-and-drop
target.
- In the PL/B Language Reference manual in the GetNextItem Method
(LISTVIEW) section, modify the Note (1.) to include the following
description after the state value table:
"When using the PL/B Web Server, only the LVIS_FOCUSED and
LVIS_SELECTED state values are supported. Any other LVIS state
values are ignored and not used."
- In the PL/B Language Reference manual in the GetStringWidth Method
(LISTVIEW) section, add the Note (5.) to read as follows:
"Note:
5. When using the PL/B Web Server, the 'GetStringWidth' method is
not supported and the {return} value is always zero."
*==============================================================================
The following files have been changed as noted:
-------------------------------------------------------------------------------
PLBSERVE, PLBSERVET (WINDOWS)
- Modified to allow the PLBCS_DEFAULTCWD setting to detect and initiate
retry logic when a UNC path is being used and a network error occurs. This
works around a problem where the PLBCS_DEFAULTCWD keyword was not taking
affect when a UNC path was used and the PLBSERVE\PLBSERVET runtimes were
automatically being started as a Windows Service after a reboot.
- Modified to output a 'd3' log entry to reflect the current
PLBCS_DEFAULTCWD keyword setting.
- Modified to output a 'd3' log entry to identify the current child type
as being 'process' or 'threaded'.
-------------------------------------------------------------------------------
PLBSERVE(WINDOWS)
- Corrected a problem where the PLBCS_DEFAULTCWD was not being used in
a child process as expected.
-------------------------------------------------------------------------------
PLBWEBSRV (HTML\JS\CSS)
- The following HTML, JS, and CSS files have been changed in the 9.7A
release. These files MUST be updated to be consistent with PLBWEBSRV
server changes for the 9.7A release.
plbwebclose.html
plbwebstart.html
plbwebbasic.js
plbwebctls.js
-------------------------------------------------------------------------------
PLBWEBSRV (Windows)
- Modified the PL/B Web Server to support the VARIANT object. In this case,
the VARIANT object is ONLY created and used at the server.
-------------------------------------------------------------------------------
PLBWEBSRV
- Added support for the BACKSTYLE property for the GROUPBOX, SHAPE, and
STATTEXT objects. With this change, the TRANSPARENT background style is
now supported for these objects.
- Modified the PL/B Web Server to support the VARIANT object. In this case,
the VARIANT object is ONLY created and used at the server.
- Modified the PICT object to support the BACKSTYLE property. This change
was made to allow an image with a transparent image to be rendered
properly on the client browser.
- Added 'SSL' support for the PL/B Web Server. The SSL support requires a
SSL certificate that must exist and available at the system where the
PL/B Web Server is executing.
SSL Certificate General Description:
"SSL Certificates are small data files that digitally bind a
cryptographic key to an organization’s details. When installed on
a web server, it activates the padlock and the https protocol
(over secured port) and allows secure connections from a web
server to a browser. Typically, SSL is used to secure credit
card transactions, data transfer and logins, and more recently
is becoming the norm when securing browsing of social media
sites."
PL/B Web Server SSL Keywords:
PLBWEB_SSL_ADDRESS={ ip | url[:portnum] } (Required if SSL used)
This keyword is required to create a secured listening socket to
be created for the PL/B Web Server that allows PL/B Web clients
to logon and execute PL/B programs using a SSL connection. The
{portnum} is optional and defaults to a value of ‘8082’ if it
is not specified. This secured listening socket connection
requires that the HTTPS protocol messages are to be used by
industry standard Web Browsers.
Example:
PLBWEB_SSL_ADDRESS=127.0.0.1
Uses default port number of 8082.
PLBWEB_SSL_ADDRESS=0.0.0.0:8082
Uses current server system IP address and sets the
port number to 8082.
PLBWEB_SSL_ADDRESS=192.168.1.106:8082
Used current system IP addresses and sets the port
number to 8081.
Note:
1. Both the PLBWEB_SSL_ADDRESS and PLBWEB_ADDRESS
keywords can be specified together in the same
PLBWEBSRV INI configuration file. When both keywords
are specified, two logon listening sockets are created
where one is used for secured socket connections and
the other is used for unsecured socket connections.
Each of these listening sockets must have a
different\unique port number.
2. If only one keyword is specified as PLBWEB_ADDRESS or
PLBWEB_SSL_ADDRESS, only one listening socket is
created to provided either unsecured or secured
socket connections.
3. The Sunbelt PWS server is a standard web server just
as Apache or IIS and as such no data encryption or
compression is done by default. This is same as if
you were using an HTML form and interfacing to a web
server. If you desire an secure connection, you must
use SSL which the Sunbelt PWS supports when the
PLBWEB_SSL_ADDRESS is configured.
PLBWEB_SSL_DEFAULT={ [program.plc | page.html] } (Optional)
This keyword is optional and has the same functional
description as the PLBWEB_DEFAULT keyword. If the
PLBWEB_SSL_DEFAULT keyword is specified, then it defines the
default behaviors for the SSL secured logon channel. However,
if this keyword is not specified, the PWS uses the setting
of the PLBWEB_DEFAULT keyword if it is being used.
PLBWEB_SSL_ROOT={ OsPath } (Optional)
This keyword is optional and has the same functional
description as the PLBWEB_ROOT keyword. If the
PLBWEB_SSL_ROO keyword is specified, then it defines the
behaviors for the SSL secured logon channel. However, if this
keyword is not specified, the PWS uses the setting of the
PLBWEB_ROOT keyword if it is being used.
PLBWEB_SSL_CERTFILE={certfile} (Optional)
This keyword is optional and is used to specify the file name
of a SSL certificate used to qualify the PL/B Web Server when
using a SSL secured logon channel. If this keyword is not
specified in the PL/B Web Server INI configuration file, the
PWS defaults to a SSL certificate file named 'cacert.pem'.
When this keyword is specified, the {certfile} can be
assigned as a file name only that must exist in the current
working directory of the PWS. In addition, the {certfile} can be
assigned as a file name with an OS full path or a partial OS
path relative to the current working directory of the PWS.
PLBWEB_SSL_KEYFILE={keyfile} (Optional)
This keyword is optional and is used to specify the file name
of a SSL certificate key(s) used to support the SSL operations
for the PL/B Web Server when using a SSL secured logon
channel. If this keyword is not specified in the PL/B Web
Server INI configuration file, the PWS defaults to a SSL
certificate key file named 'privkey.pem'. When this keyword is
specified, the {keyfile} can be assigned as a file name only
that must exist in the current working directory of the PWS.
In addition, the {keyfile} can be assigned as a file name with
an OS full path or a partial OS path relative to the current
working directory of the PWS.
Notes:
1. When the PL/B Web Server is configured to provide a SSL
secured logon channel, a server SSL certificate MUST be
provided and available on the system executing the PWS.
2. A Windows PL/B Web Server requires access to the
'ssleay32.dll' to provide a SSL secured logon channel.
If the 'ssleay32.dll' can be found and loaded by the
PWS runtime, the PWS runtime terminates immediately
without starting. Most Unix\Linux OS systems come with
OpenSSL installed, therefore the Unix\Linux PL/B Web
Server is statically linked so the OS can automatically
load the OpenSSL libraries when the PWS runtime is
loaded by the OS.
3. To support PL/B development of PWS applications, a
self-signed certain may be generated and used during the
development period. In this case, one of the following
scenarios can be used to generate a SSL self-signed
certificate:
A) Use the 'openssl' command and execute the following
commands in a Windows command shell. Please note
that the 'openssl.exe' may already exist on a user's
system in a directory like 'c:\openssl\bin'.
Otherwise, the 'openssl.exe' command may need to be
downloaded from 'https://www.openssl.org'.
"openssl genrsa -our privkey.pem 2048"
"openssl req -new -x509 -key privkey.pem -out
-out cacert.pem -days 1095"
B) As an alternate, the user can go to the following
link and get a self-signed certificate.
"http://www.selfsignedcertificate.com/"
4. To obtain a server SSL certificate that is NOT self-signed,
the user should contact their Internet Service Provide.
- Modified the PL/B Web Server to support the BUTTONTYPE property for a
BUTTON object to allow a PWS only button type of '$FILEINPUT' or value
3 to be used. The 'BUTTONTYPE=$FILEINPUT' is used to create BUTTON
object that automatically invokes a client browser 'File Upload'
selection dialog. This selection dialog allows an end user to
select file(s) that can subsequently be retrieved\copied from the
client browser environment to the PWS server using a PL/B COPYFILE
instruction.
- Modified the BUTTON object to support a CHANGE event that is generated
when a 'BUTTONTYPE=$FILEINPUT' is being used and an end-user has
made a selection from the client browser 'File Upload' selection
dialog.
Note:
1. The CHANGE event for a BUTTON object is ONLY generated when
executing under a PL/B Web Server and a file has been
selected by an end-user using the client browser
'File Upload' selection dialog. For this event; the event
character is always 0x20; the event result is always 0; and
the event modifier is always 0.
2. When this CHANGE event for a BUTTON object is processed, the
PL/B logic can use the BUTTON 'GetFileCount' and 'GetFileItem'
methods to retrieve the end-user file selection information.
- Modified the BUTTON object to support 3 new methods named 'GetFileCount',
'GetFileItem', and 'SetFileOptions' that can be used when executing
under the PL/B Web Server. These methods are described as follows:
...............................................................
. GetFileCount Method for BUTTON
.
The GetFileCount method can be used to retrieve the number of files
that have been selected by an end-user using a BUTTON 'File Upload'
selection dialog for a client browser. This method only returns
a file count when executing using the PL/B Web Server. Otherwise,
this method always returns a value of zero.
The method uses the following format:
[label] {object}.GetFileCount GIVING {return}
Where:
{label} is an optional Program Execution Label.
{object} is a required BUTTON object to be accessed.
{return} is a Numeric variable that returns the
file selection count.
Flags Affected: EOS, OVER, ZERO
Note the following:
1. The EOS flag is always cleared.
2. The ZERO flag is set to be TRUE when the return value
is zero. Otherwise, the ZERO flag is set to false when
a non-zero value is returned.
3. The OVER flag is set to be TRUE if the {return} variable
is too small to store that value without being truncated.
4. This method is only returns a file selection count when
executing using the PL/B Web Server.
...............................................................
. GetFileItem Method for BUTTON
.
The GetFileItem method can be used to retrieve the file names
that have been selected by an end-user using a BUTTON 'File Upload'
selection dialog for a client browser. This method only returns
file selection names when executing using the PL/B Web Server.
The method uses the following format:
[label] {object}.GetFileItem GIVING {return}:
USING [*Index=]{index}:
[*Flags=]{flags}
Where:
{label} is an optional Program Execution Label.
{object} is a required BUTTON object to be accessed.
{return} is a Character String variable that returns
the file selection information.
{index} is a Numeric variable or decimal number
that is a zero-based index into an array of
file selection of files being retrieved. This
method parameter is required.
{flags} is a Numeric variable or decimal number whose
value provides bit mask values that are used
to identify the type of data being retrieve
for a given file selection. This method
parameter is required.
Flags Affected: EOS, OVER, ZERO
Note the following:
1. The EOS flag is set if the {return} Character String
variable to too small to retrieve the file selection
data.
2. The ZERO flag is always cleared.
3. The OVER flag is always cleared.
4. If the {flags} bit mask value is zero, the {return}
Character String variable is returned as a NULL variable.
Otherwise, the {flags} bit mask values are described
as follows:
Flag Values Description
0x00000001 Return the file name of selection.
0x00000002 Return the file type of selection.
0x00000004 Return the file size of selection.
Any combination of these bit values can be used.
If multiple bit mask values are specified in the
{flags} value, the data fields (name, type, size)
are separated by a '|' delimiter and returned
in the {return} variable.
Example:
but.GetFileItem GIVING S$CMDLIN USING 0, 5
.
. S$CMDLIN could contain:
.
. filename.ext|2048
.
...............................................................
. SetFileOptions Method for BUTTON
.
The SetFileOptions method can be used to set the specific options
to be used by the client browser 'File Upload' selection dialog
which can be invoked using a BUTTON object with the
'BUTTONTYPE=$FILEINPUT' type. This being only takes affect when
executing using the PL/B Web Server.
The method uses the following format:
[label] {object}.SetFileOptions GIVING {return}[:
USING [*Filter=]{filter}][:
[*Flags=]{flags}]
Where:
{label} is an optional Program Execution Label.
{object} is a required BUTTON object to be accessed.
{return} is a Numeric Variable whose value is always
set to a zero value.
{filter} is a Character String variable or literal that
contains a filter string that is applied by
a client browser 'File Upload' selection dialog
to restrict the end-user file selections. This
method parameter is optional.
{flags} is a Numeric variable or decimal number whose
value provides bit mask values that are used
control behaviors that are applied to the
client browser 'File Upload' selection dialog.
This method parameter is optional.
Flags Affected: EOS, OVER, ZERO
Note the following:
1. The EOS flag is always cleared.
2. The ZERO flag is always set.
3. The OVER flag is always cleared.
4. The {flags} bit mask values are described as follows:
Flag Values Description
0x00000000 Restrict to select only one file.
0x00000001 Allow multiple files to be selected.
5. The optional {filter} string can be specified to restrict the
selection criteria to be applied by the client browser
'File Upload' selection dialog. The {filter} string can be
specified as a comma delimited list of MIME types as
described for the 'accept' attribute of a HTML
tag. See the following browser link for
more details on acceptable MIME types that can be use:
http://www.w3schools.com/tags/att_input_accept.asp
Example of {filter} MIME Types:
FileSel.SetFileOptions Using *Filter=""
- Reset to NOT use any filtering.
FileSel.SetFileOptions Using *Filter="image/png"
- Set the filter to png images only.
MOVE "image/gif,image/jpeg,image/png", S$CMDLIN
FileSel.SetFileOptions Using *Filter=S$CMDLIN
- Set the filter to images with gif, jpeg, and png
types.
FileSel.SetFileOptions Using *Filter="image/*"
- Set the filter to all image types.
- Support to allow a COPYFILE instruction to be executed under the
PL/B Web Server has been implemented to allow end-user selected
files to be copied from a client browser system to the PWS server.
Due to security constraints implemented by client browser environment,
ONLY files selected by an end-user using a 'File Upload' selection
dialog controlled by a browser can be copied from the client system.
Therefore, changes to allow a 'BUTTONTYPE=$FILEINPUT' property have
been implemented for a BUTTON to allow end-user file selections at
a client browser that can then be copied from the client system to
the PWS system using the COPYFILE instruction.
- Modified the RUNTIME object to support a method named 'GetDir' that
allows directories used by the runtime to be returned to the
PL/B program.
...............................................................
. GetDir Method for RUNTIME object
.
The GetDir method can be used to retrieve the directories that
are currently in use for a PL/B runtime. This method has been
added to support COPYFILE execution in the PL/B Web Server
environment.
The method uses the following format:
[label] {object}.GetDir GIVING {return}:
USING [*Type=]{dirtype}
Where:
{label} is an optional Program Execution Label.
{object} is a required RUNTIME object to be accessed.
{return} is a Character String variable that receives
the current directory name and path being
used by the RUNTIME object for the specified
{dirtype} value.
{type} is a Numeric variable or decimal number that
identifies the specific RUNTIME directory type
to be returned in the {return} Character String
variable.
Flags Affected: EOS, OVER, ZERO
Note the following:
1. The EOS flag is set TRUE if the {return} Character String
variable is too small to receive the directory data without
being truncated.
2. The ZERO flag is always cleared.
3. The OVER flag is always cleared.
4. The {dirtype} values define the type of directory information
to be returned:
Type Values Description
0 The current working directory is returned.
1 The directory specified by the
PLBWEB_PROGRAM_ROOT keyword is returned.
If this keyword is not specified, the
{return} variable is returned as a NULL
variable.
2 If a client browser logs on using a SSL
connection, this directory is used to
support that connection. The directory
specified by the PLBWEB_SSL_PROGRAM_ROOT
is returned when it exists. If the
PLBWEB_SSL_PROGRAM_ROOT does not exist,
the PLB_PROGRAM_ROOT keyword is returned.
3 The directory specified by the PLBWEB_ROOT
keyword is returned. If this keyword is
not specified, the {return} variable is
returned as a NULL variable.
4 If a client browser logs on using a SSL
connection, this directory is used to
support that connection. The directory
specified by the PLBWEB_SSL_ROOT keyword
is returned if it exists. If the
PLBWEB_SSL_ROOT does not exist, the
PLBWEB_ROOT keyword is returned.
- Modified the CLIENT object to support a method named 'GetState' that
can be used to return state flags that reflect the current execution
environment being used for the client browser.
...............................................................
. GetState Method for CLIENT object
.
The GetState method can be used to retrieve the current state
information being used for the client browser environment.
The method uses the following format:
[label] {object}.GetStat GIVING {return}:
USING [*StateMask=]{mask}
Where:
{label} is an optional Program Execution Label.
{object} is a required CLIENT object to be accessed.
{return} is a Numeric variable that is returned as a
value of 1 or 0.
{mask} is a Numeric variable or decimal number whose
value identifies a bit mask where each bit
corresponds to a client state flag.
Flags Affected: EOS, OVER, ZERO
Note the following:
1. The EOS flag is always cleared.
2. The ZERO flag is set TRUE if the {return} value is zero.
Otherwise, the ZERO flag is set to FALSE.
3. The OVER flag is always cleared.
4. The {return} value of 1 is returned when all states for
all {mask} state flags are 1. Also, note that a value of 1
is returned if the {mask} has a value of zero. A {return}
value of 0 is returned when any one state corresponding
to a {mask} state flag is zero.
5. The {mask} bit values define the state flags to be returned.
Mask Values Description
0x00000000 When there are no state flags specified, the
{return} value is always returned as a value
of 1.
0x00000001 This state flag identifies when a client is
logged on using a SSL connection or not.
- Modified the CLIENT object to support a method named 'GetLocation' that
retrieves client browser latitude and longitude coordinates. These
coordinates can be used be used to map the location of the client
browser connected to the PL/B Web Server.
...............................................................
. GetLocation Method for CLIENT object
.
The GetLocation method can be used to retrieve the client browser
latitude and longitude coordinates. These coordinates are returned
in a delimited character string.
The method uses the following format:
[label] {object}.GetLocation GIVING {return}[:
USING [*Options=]{options}]
Where:
{label} is an optional Program Execution Label.
{object} is a required CLIENT object to be accessed.
{return} is a Character String variable that receives
latitude and longitude coordinates where they
are separated by a comma delimiter.
{options} is a Numeric variable or decimal number that
identifies behavior flags for this method.
Flags Affected: EOS, OVER, ZERO
Note the following:
1. The EOS flag is set TRUE if the {return} Character String
variable is too small to receive the location coordinates.
2. The ZERO flag is always cleared.
3. The OVER flag is always cleared.
4. There are no special {options} behavior bit values defined
at this time.
5. The latitude and longitude coordinates are returned as
ASCII number character strings separated by a comma
delimiter.
format:
{latitude},{longitude}
Example data format:
NN.nnnnnnnnnnnnnnn,MM.nnnnnnnnnnnnnnn
37.006708599999996,-92.98609249999999
Example Program Logic:
Panel PANEL
AllData DIM 300
Html DIM 300
.
CREATE PANEL=...
ACTIVATE PANEL
.
Client.GetLocation Giving AllData
.
Cmatch AllData To "E"
If Not Equal
Pack Html1 Using ""
Endif
.
Panel.InnerHtml Using Html
...
- The ALERT instruction has been modified to replace any 0x7F characters in
the {message} body data with a "" element when executing under the
Plb Web Server.
- Modified the LISTVIEW 'LoadXmlFile' method to return a result of '200'
when there is a problem accessing the input '.xml' file under the
Application Server. Also, a return error result value of '201' is now
generated when the 'Options' $LV_XMLRD_USECOLUMNS bit value is being used
and there are no columns in the LISTVIEW or there is insufficient memory
to process existing columns. See the PL/B Language Manual 'LoadXMLFile
Method' Note (7.) for a description of all possible error results.
- Modified the PICT object to support the AUTOSCALE, SCALE, PICTSIZEH,
and PICTSIZEV properties.
- Modified the EDITNUMBER and EDITDATETIME (time) control to support the
change event when the spin control is used.
- Corrected a SETPROP problem where the Red and Blue components of a RGB
value used for the BGCOLOR, BDRCOLOR, and FGCOLOR properties were being
reversed when executing under a Plb Web Server runtime.
- Corrected a problem for the LISTVIEW method named 'SaveXmlFile' when
processing columns. This problem was preventing the creation of the '.xml'
file and the 'SaveXmlFile' method was returning an error value of '8' as
a symptom.
- Corrected a memory leak\loss problem in the PWS child tasks for the
the mini-server.
- Corrected a problem where the GROUPBOX was attempting to show a title
when there was NO title to be shown.
- Corrected a problem where docking of an object was NOT occurring for
the ACTIVATE and DEACTIVATE of an object.
- Corrected a problem where the GETITEM for a COMBOBOX object was not
working and did not return any data.
- Corrected a problem where a STATTEXT was showing extra '&' characters
characters using SETPROP TEXT and SETITEM instructions.
- Corrected a problem where a Modal Dialog WINDOW could be made visible
during a FORMLOAD operation unexpectedly. This correction REQUIREs
an updated 'plbwebctls.js'.
- Corrected a problem where a MODAL WINDOW could cause an unexpected
O105 error on exit from a LOAD event generated by a FORMLOAD.
- Corrected a problem where a WINDOW object using the 'WINPOS=$MAXIMIZE'
property did not fill the client browser viewport with the background
color of the WINDOW object.
- Corrected a problem where the WINDOW HEIGHT and WIDTH properties did not
properly change the client browser viewport size. In addition, the
HEIGHT property did not take into account a MENU if it is being used.
This could cause an unexpected height to be set for the client
browser viewport.
- Corrected a potential GPF when using a MODAL dialog.
- Corrected a problem where the 'SQLITE;;' driver was not implemented
for the DBCONNECT instruction. This problem was causing an unexpected
D201 error.
- Corrected DATALIST issues where the methods named 'GetFirstSel',
'GetNextSel', and 'GetSel' were not using zero-based indices for
selections.
- Corrected a GPF problem that would occur when a COMBOBOX object was
created with a NULL {menu} string.
Example of GPF:
cb COMBOBOX
index FORM 1
.
CREATE cb=1:10:1:20, "Test", "", VISIBLE=1 //Caused GPF!
- Corrected a problem where special control characters in a COMBOBOX
{menu} string were being displayed in the combobox items. These
special control characters are now removed\ignored.
- Corrected a problem where the 'System Color Constants' ($BTNFACE, ...etc)
did not work. This problem existed for all color properties.
- Corrected a problem where a SHAPE object for a rectangle did not have a
border.
- Corrected a problem where the BGCOLOR property for the Modeless and Modal
WINDOW objects did not work.
- Corrected a problem where the EDITDATETIME 'Calendar' was coming up under
the window of a MODAL or MODELESS WINDOW object that contained the
EDITDATETIME object.
- Corrected a problem where the $CHANGE event was not working as expected
for the EDITDATETIME object when selecting a date from the object
'Calendar'.
- Corrected a problem where a LISTVIEW 'LoadXMLFile' method could cause a
GPF error.
- Corrected a GPF error that could occur if a SHUTDOWN instruction was
executed while a MODAL WINDOW was the current active window.
- Corrected LISTVIEW object problems where the Click and Double Click
events did not work.
- Corrected a problem where the EDITNUMBER background and foreground
colors did not work.
- Corrected a problem where the EDITNUMBER default border was not being
setup\presented properly giving an unexpected object size.
- Corrected a problem where the EDITTEXT border usage was not working
properly resulting in an unexpected object size.
- Corrected a problem where the EDITTEXT SelectAll method did not work.
- Corrected a problem where the EDITNUMBER STATIC and READONLY properties
did not get applied.
- Corrected a problem where a LABELTEXT object using the MULTILINE property
did not honor embedded CR and LF characters in the TEXT data stream.
- Corrected a problem where the EDITNUMBER was being clipped such that
the right side border was not being shown.
- Corrected a problem where the LISTVIEW 'GetNextItem' method did not work
and was always returning a value of '-1'.
- Corrected a problem where the 'GETITEM TABCONTROL, 0, nvar' instruction
was returning an invalid value.
- Modified the LISTVIEW line item focus to better distinguish when the
LISTVIEW has the focus or not. If the LISTVIEW does not have the focus, a
lighter shade color is used for the dashed rectangle and background
highlight color when applicable.
- Corrected a problem where a horizontal or vertical line was not being
shown on the browser client.
- Corrected a problem where the LINE object was not appearing for a
horizontal or vertical line.
-------------------------------------------------------------------------------
PLBWIN, PLBNET, PLBSERVE, PLBWEBSRV (Windows)
- Corrected a problem where a REPOSIT using a negative FORM {offset}
value would generate an 'I08 subcode 5 WINERR: 0x83' when executing
a runtime built with 64-bit platform support. It should also be noted
that a FORM variable value for the {offset} is first converted to a
64-bit integer value. With this change, any runtime built with 64-bit
platform support will limit the {offset} integer value (after any
conversion) to a maximum of hex '0x3fffffffffffffff' or decimal
'4,611,686,018,427,387,903'.
-------------------------------------------------------------------------------
PLBWIN, PLBNET, PLBSERVE, PLB(UNIX), PLBWEBSRV
- Updated the runtimes to use the latest SQLite version 3.8.7.
- Added support for a new keyword for SQLIO operations that specify
a SQL command that is sent to initialize a SQL Database engine when a
SQLIO connection occurs. The SQL initialization command is sent exactly
as specified by the user string assigned to the keyword. The SQLIO
initialized keyword includes the name of the database being connected.
The new keyword is formatted as follows:
Formats:
PLB_SQLIO_INIT={SqlCommand} //Uses 'Default' database
PLB_SQLIO_INIT_dbname ={SqlCommand} //Uses user 'dbname' database
Where:
'dbname'
Is the name of the database as specified in the
Sun_Sqlio_Databases table or the static default
database name of "Default" when the '_dbname' is not
used in the keyword name.
Example:
PLB_SQLIO_INIT={SqlCommand}
PLB_SQLIO_INIT_UserDatabase={SqlCommand}
{SqlCommand}
Is an SQL database initialization string as specified by
the end-user. The end-user is responsible for ensuring that
the {SqlCommand] syntax is correct and can be accepted by
the SQL Database being connected for SQLIO operations.
Warning:
1. The SQLIO operations are implemented to execute SQL
statements to simulate PL/B native IO. Successful
simulation depends on expected behaviors and SQL
expression processing for a Database Engine.
2. The SQLIO operations are NOT implemented to replace
PL/B DBxxxxx statements and associated behaviors.
3. If the SQLIO initialization keywords are used resulting
in unexpected SQL table behaviors, the PL/B developer and
end-user are responsible for unexpected PL/B IO simulation
behaviors. Sunbelt will not modify the SQLIO PL/B IO
simulation algorithms to accommodate unexpected SQL table
behaviors caused by a user specified SQLIO initialization
command.
- Modified the MAILSEND trace output to use a date format of
YYYY-MM-DD to be more consistent for international viewing.
- Added Ansi encoding for built-in font tables to correct alignment
problems using *RIGHT and *CENTER controls when national characters
are being used for Sunbelt PDF output.
- Modified the '-d3' logging to include the JPEG version.
- Added a new keyword named 'PLB_SQLIO_SCOPEID={on|off}' which can be
specified in the runtime INI configuration to force the PL/B
runtimes to use the SQL Server 'SCOPE_IDENTITY' function to get
the last IDENTITY value inserted into an IDENTITY column in the
same scope. It has been reported that the PL/B SQLIO FPOSIT operation
could return an invalid IDENTITY value when using the Microsoft
Server with multiple PL/B user and non-PL/B user applications are
changing the same SQL table. When the 'PLB_SQLIO_SCOPEID' keyword is
NOT being used or set the OFF, the PL/B runtimes use the SQL Server
'IDENT_CURRENT' identity value which may rarely return the unexpected
value. When the 'PLB_SQLIO_SCOPEID' is set to ON, the PL/B runtimes
use the SQL Server 'SCOPE_IDENTITY' function to fetch the last identity
value that is ONLY applicable for the current user scope and session.
- Added a new keyword named 'DO8BITATTRCONV={dnumnvar}' for the GETMODE
and SETMODE instructions. This keyword can be used to force the *COLOR
control for a KEYIN\DISPLAY to process the input color mask as an 8-bit
value that is converted to a 16-bit runtime attribute. This keyword is
provided to allow use of 8-bit *COLOR values that allow legacy programs
to execute without having to be changed.
- Added a new option named *STARTTLS to the MAILSEND instruction. This
option can be used to cause the MAILSEND to use the TLS ( Transport
Layer Security ) to access an Email Server.
- Corrected a Sunbelt PDF problem where a normal font without bold\italic
could cause the font to be used with a wrong attribute such as
oblique or black.
- Corrected a problem where the MAILSEND was generating an extra empty
between the message header and the message body. This extra empty line
was resulting in a blank line at the beginning of an email message
body.
- Corrected a problem where the PRINT *TAB print control value was being
limited to a value of 255. This restriction could cause unexpected
results if the *TAB value was larger than 255. This change allows
the PRINT *TAB value to be limited to 512 for the print column
position.
-------------------------------------------------------------------------------
PLBWIN, PLBNET, ALL GUI CLIENTS
- Modified the PICT object to detect and convert JPG CMYK images into
a RGB bitmap. This allows a CMYK JPG to be displayed using the PICT
object.
- Modified the CHECKBOX object to support an automatic Tristate mode. This
Tristate mode invokes a Windows OS checkbox style that causes the
checkbox control states to be changed automatically by the Windows OS
without requiring any execution of PLB instructions. See the
PL/B Language Reference Manual for more details.
- Added a new optional parameter named 'HWND={dnumnvar} to the ChooseColor
method for the COLOR object. The HWND parameter allows the PLB program
to specify a Windows HWND to define the owner Window for the color
dialog.
These methods are described as follows:
...............................................................
. ChooseColor Method for COLOR
.
The ChooseColor method creates a color dialog that allows the user to
select a color for a COLOR object.
The method uses the following format:
[label] {object}.ChooseColor GIVING {return} USING [*Flags=]{flag}[:
[*Hwnd=]{hwnd}]
Where:
label
Optional. A Program Execution Label.
object
Required. A COLOR object that has been created.
return
Optional. A Numeric Variable that indicates the success or
failure of the method.
flags
Required. A Numeric Variable or decimal number that
specifies a bit map value that initializes the dialog box.
hwnd
Optional. A Numeric Variable or decimal number that
specifies the HWND handle a Window that is to be the owner
of the Choose Dialog Window.
- Added a new optional parameter named 'HWND={dnumnvar} to the ChooseFont
method for the FONT object. The HWND parameter allows the PLB program
to specify a Windows HWND to define the owner Window for the choose font
dialog.
These methods are described as follows:
...............................................................
. ChooseFont Method for FONT
.
The ChooseFont method activates a Windows Font Dialog that allows a
user to select a font for use in a program.
The method uses the following format:
[label] {object}.ChooseFont [[GIVING {return}][USING:
[*Flags=]{flags}][:
[*HDC=]{hdc}][:
[*SIZEMIN=]{min}][:
[*SIZEMAX=]{max}][:
[*COLOR=]{color}]]:
[*HWND=]{hwnd}]]]
Where:
label
Optional. A Program Execution Label.
object
Required. A WINDOW object that is accessed.
return
Optional. A Numeric Variable that receives zero if the font was
selected without error. A non-zero value is returned when an error
occurs for the font selection.
flags
Optional. A Numeric Variable or decimal number that specifies a bit
map value for state flags that can be applied to control some
aspects of the Font Dialog.
hdc
Optional. A Numeric Variable or decimal number that specifies a
Windows handle for a printer device context as returned using the
GETFILE HDC keyword instruction.
min
Optional. A Numeric Variable or decimal number that specifies the
minimum font size presented in the font dialog.
max
Optional. A Numeric Variable or decimal number that specifies the
maximum font size presented in the font dialog.
color
Optional. A COLOR object that has been previously created.
hwnd
Optional. A Numeric Variable or decimal number that specifies the
HWND handle a Window that is to be the owner of the Font Dialog
Window.
- A new method named 'PreventKeyClickEvent' has been added for a DATALIST
object. This method can be used to prevent any Click Events for a
DATALIST object that normally occur when keypress actions occur using the
'up arrow', 'down arrow', 'left arrow', 'right arrow', 'home', 'end',
'page up', or 'page down' keys.
These methods are described as follows:
...............................................................
. Method PreventKeyClickEvent for DATATLIST
.
The PreventKeyClickEvent method allows the Click Event as generated
by key actions for a Datalist to be enabled or disabled under program
control.
The method uses the following format:
[label] {object}.PreventKeyClickEvent GIVING {return}:
USING [*Value=]{value}
Where:
label
Optional. A Program Execution Label.
object
Required. A DATALIST object that has been created.
return
Optional. A Numeric Variable that is always returned as 0.
value
Required. A Numeric Variable or decimal number that
identifies whether the key action Click Event for the
DATALIST is to be enabled or disabled.
Flags Affected: EOS, OVER, ZERO
Note:
1. The {return} value is always returned as a value of zero.
The ZERO flag is always set. The EOS and OVER flags are
always cleared.
2. When the input {value} parameter is zero, the DATALIST
Click Events caused by end-user key action is disabled.
When the input {value} is non-zero, the DATALIST Click
Events caused by end-user key actions is enabled.
3. This method can be used to implement a DATALIST item
selection behavior where ONLY mouse actions can be used
to generate Click Events by an end-user.
-------------------------------------------------------------------------------
PLBCMP
- Added a new keyword named 'DO8BITATTRCONV={dnumnvar}' for the GETMODE
and SETMODE instructions. This keyword can be used to force the *COLOR
control for a KEYIN\DISPLAY to process the input color mask as an 8-bit
value that is converted to a 16-bit runtime attribute. This keyword is
provided to allow use of 8-bit *COLOR values that allow legacy programs
to execute without having to be changed.
- Modified to allow the BACKSTYLE property to be compiled for a PICT
object. The BACKSTYLE property is ONLY used when executing with a
PL/B Web Server.
- Corrected a problem where the RPRINT instruction would cause an
unexpected compiler error. This problem was caused by 9.7 changes to the
compiler.
-------------------------------------------------------------------------------
PLBDBUG
- Modified the character debugger to eliminate use of the 'SETMODE *OPENABS'
mode for opening '.sdb' files when the DBGIFACE GUI debugger interface
is being used. This change is to improve the DBGIFACE GUI debugger
performance when '.sdb' files are being loaded over a WIndows OS Network
shared drive.
- Modified to allow the GUI Watch to work properly when debugging a
program using the PL/B Web Server.
-------------------------------------------------------------------------------
PLBEQU.INC
- Updated for 9.7A release.
-------------------------------------------------------------------------------
PLBMETH.INC
- Updated for 9.7A release.
-------------------------------------------------------------------------------
DESIGNER.PLC
- Added a trap to catch file creation error for the designer user objects
file (designer.uo).
- Corrected the test web form object file name during testing.
- Corrected the BrowseForFolder value in the Options dialogs to specify
directories only for backup files and web form testing.
- Added checks to ensure each forms internal type indicator is consistent
with the form type requested during Opens.
- Added logic to set the form types of backup files opened based on the
internal type indicator.
- Corrected initial position of a form when using a UNITS property value
other than pixel.
- Modified design grid to support a maximum grid spacing of 99 pixels.
- Disabled selection of Windows System Colors when working with a WebForm.
- Corrected properties supported by Web Form in the definitions file.
- Added the Tools/Verify Event Registrations diagnostic function.
- Corrected addition of ActiveX objects to support multiple controls per
file.
- Corrected an error and enhanced the operation of the shortcut menu
function Examine Control.
- Corrected placement of design form when open an existing web form.
- Moved the loading of the toolboxes and the included loading of controls to
after the determination of a copy of the designer was already active.
- Added a New Web Form From Template selection to the File/New menu.
- After double-clicking an object on the design form that has existing code,
the source window is opened and positioned to the first non-readonly line,
and the window takes focus.
- Corrected object double-click detection when no objects are selected.
- Added an option to the Tools/Options/Code/Name page to disable the removal
of empty event routines on Saves.
- Corrected an XML Read Error that could occur after a Save All operation.
- Corrected clipboard handling when changing from one form type to another.
- Added logic to automatically register any orphaned event routines.
- Added option to control automatic registration of orphaned event routines.
- Corrected positioning during pasting operations.
- Corrected marking of event code when the event label had been truncated to
32 by the runtime.
- Modified the filters for the add new picture resource dialog.
- Corrected an issue in the remove empty code routine that would fail to
recognize a non-empty block with a specfic matching value.
- Modified the open and new form logic to better determine the type of form
being edited based on values reported by the runtime.
- Corrected two issues regarding the deletion of object array elements.
-------------------------------------------------------------------------------
EDITOR.PLC
- Now removes the editor recovery file when exiting and not saving changes.
- Added a NORECOVERY option to prevent execution of the editor recovery
logic.
- Corrected some alert messages.
- Correct the Cancel logic when closing a project and an open file has
pending modifications.
- Corrected the character case of calls to VARTYPE.
- Corrected an error in ReplaceAllInSelection that would incorrectly replace
a match that was not in the selection.
-------------------------------------------------------------------------------
SUNIDE.PLC
- Added an editor no recovery option to the IDE settings.
-------------------------------------------------------------------------------
SUNCS21.OCX
- Corrected an issue in the editor control that would cause a hang in the
FindText routine when the edit buffer was empty.
-------------------------------------------------------------------------------
SCHEMAEDITOR.PLC
- Version Update Only.
-------------------------------------------------------------------------------
DBGIFACE.PLC (Graphical Debugger)
- Version Update Only.
-------------------------------------------------------------------------------
PROFILER.PLC
- Version Update Only.
-------------------------------------------------------------------------------
WATCH.PLC
- Version Update Only.
-------------------------------------------------------------------------------
DBEXPLORER.PLC
- Version Update Only.
-------------------------------------------------------------------------------