Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Mike King

Nomads / Re: Drag and Drop a File
July 10, 2024, 02:58:36 PM
If you want to drop files from Outlook attachments they first have to be dropped into physical files in a directory.

What I have done in the past is create temporary directories where I have the user drag whatever they want.  I display the temp directory using the windows File.Explorer Com object.  It will accept just anything and convert them to files.  Simply create a dummy directory then point the file.explorer Com object to it. 
Nomads / Re: Drag and Drop a File
July 10, 2024, 01:17:48 PM
Use the DROP FILE directive.

See External File Droping in

I would suggest you try a different user -- either NETWORK SERVICE or a standard user on the system.

Mike King
Language / Re: Easiest way to create an XML file
June 03, 2024, 09:50:57 AM

While it is true that the XML object maintains the full XML in memory, you would need a very large XML for it not to be supported especially when using a 64 bit version of PxPlus.

That being said if what you are creating is a XML file with multiple sub-entries such as an XML with all invoices and details you can likely generate this yourself creating a wrapper manually and using the XML object for the sub-ordinate entires:

For example:

   PRINT (xmlfile) "<invoices>"
   oXML=new("*obj/xml" for program)
   SELECT * from "invfile"
   oXml'Set_xml("") ! Clear any prior values
  ... create the XML for the invoice
   PRINT (xmlfile) oXml'get_xml$()
   NEXT Record
   PRINT (xmlfile) "</invoices>"

This will allow you to create any size XML.
Language / PxPlus *browser patch level
June 03, 2024, 08:04:53 AM
There is a significant alert for chrome and all chromium based browsers that has been reported with many companies requiring their users to update or delete Chrome immediately.

Can you advise if these corrections are included in the current *browser and if there will be a fix for prior versions of PxPlus.

For details on this issue see
When I was developing Webster+ I refined the logic and functionality based on the needs that came up in CATS demo application.

Once the basic design of Webster+ was done, I started with the demo application and as I ran into things that I felt could be done easier I added functionality to Webster+ and also worked with the development team to add functionality to the File Maintenance Generator to make application development faster and easier.

There are a lot of things that you can do in Webster+, many of which are incorporated in the Webster toolkit and the CATS demo application which is a good place to see what's possible.

There is a utility built into PxPlus that will load a variable with the contents of a file:  *tools/readfile.

Given this all you need to do is change line 100 in your code to something like:

0100 call "*tools/readfile", "Cleary_Quote.xml", Body$

Perhaps this will help.  The following page shows a list of all printers configured on your Windows server (Windows only).  You can select one and press the button which will force a crash so you can see the values..

<!DOCTYPE html>
<p>[ttl]Mike Printer Select[/ttl]</p>
[execute winprt_setup read printer$]
[execute winprt_setup list printerlist$][hide printerlist$]
[list printer$ size=50/10][data text=(printerlist$)][/list]<hr>
[button text="Force Dump" event=crash@crash]

I used the [execute] to load the current/default printer and the full printer list.

BTW: The [hide] for the printerlist$ is not required but was included so you could see the values in the dump.

There are any number of ways to add a printer list to a Webster+ panel.

If you have the list in a variable you can simply do something like:

[list printer$][data text=(printerlist$)][/list]

You can see this in the *webster/pages/reports.html file where the system loads variable fieldNames$ which was added to the form using a [hide] short code.  This variable was loaded in the [form program=*report] which runs the INIT event in *webster/report.

Personally though I wouldn't put the printer list in the form.  No need to have the system load it on every request.  On windows you can have a fairly significant delay to get the list of printers if some of them are offline or misconfigured.

Instead I would create a drop down query for a printer$ input field and set the field as 'required'.  Whenever printer$ input is changed I would have an event that updates the user data with the last requested printer using the %webster'SetUserData() method so that all subsequent requests will have %usr.Printer$ with the last selected printer.  You can then use an [exec printer$=%usr.printer$] in your logic to initialize the value.

There are other methods such as using cookies, but personally I would suggest using the user data as that would provides consistency for the user regardless as to the browser.

Glad to hear you got it to work.

Perhaps the data is nt only gzip'ed but also Base64 encoded which would be common where binary data, such as what would be in the zipped contents, is involved.
Further info...

If you need to decompress data in a response prefix the data with a $00$ then pass it to the UCP function.

See for details
If you need to provide the content type to the request you can pass it in as the fifth parameter to *plis/web/request.


To compress data use the CMP() function and strip the first byte as per the manual.
Programming / Re: To ERR 65 or not to err 65
May 07, 2024, 02:39:50 PM
Looking at what you posted you will notice that when the error was not reported you are connecting via WINDX whereas you get the error when connected directly.  You can tell this by the command line prompt -> versus -}.

If you have enabled WindX Turbo Mode (which is done be default in Nomads) duplicate CTL errors will not be reported back to the server but instead will be reported locally and reported only if the WindX setup enables local error reporting (default is not enabled).

WindX and Nomads are designed to maximize performance by running in Turbo Mode as no errors are anticipated.  This allow the system to run faster by not waiting for the WindX to report success or failure (much like UDP if you are familiar with that network protocol).
Programming / Re: Source code formatter
May 01, 2024, 05:27:00 PM
There is one built into ED+.

Simply load the program into ED+ then select Tools >> Reformat from the menu bar. 

You can then save the resultant as a sequential file.
ODBC / Re: ODBC Service Crashing
April 29, 2024, 05:48:48 PM

The issue may be related to invalid data in your file.  PxPlus doesn't, by default, validate that the data you write into the files matches the data dictionary specifications. On the other hand, ODBC access relies on the fact that the data adheres to the specifications.

What might be happening is that there is a field whose contents is larger than expected thereby causing a memory access problem.

To check this try running the Verify Data option on the Database export utility.  Basically pretend you are going to export your data to a database, launch the export utility from the data dictionary and select "Verify Data".  It should read through your file and check that the file contents adheres to the Data Dictionary specifications.

Good luck