Friday, May 31, 2024
NUGM 2024: A Real Live User Group Meeting!
Friday, May 19, 2023
Manage 2000 Release 8.1 Service Pack 6 Now Available
Just in case you missed the official announcement...again!:
"We are pleased to announce that Release 8.1 Service Pack 6 was released today, April 17th, 2023 and is now available for upgrades."
And yes, we already have 4 or 5 requests in for it. So the glacier of Manage 2000 client releases continues to press forward.
We have had folks using the knowledgebase for a couple of years and while it is hard to imagine new classic Manage 2000 topics to add to the thousands of KB articles already created, it is pretty obvious that new features in recent service packs deserve some knowledge creation. So, I am trying to remember the lessons of my technical writing course some years back...something about hushing the passive voice.
There is a school of thought that documentation should be done first and that development should drive off of the documentation. What I experience is that knowledge creation drives bug fixes.
When a developer is tasked with knowledge creation and actually has to find simple examples to put into how-tos, things that can go wrong generally do. But that is why the patch system exists, to make Manage 2000 more resilient.
The other great excitement of the moment for me is a client doing beta testing on the web based ProductConfigurator. The ProductConfigurator was introduced in release 7.2. The backend has been used by several clients to process custom front end request, but the standard user interface has never undergone a serious full beta test cycle with feedback to and correction by the development staff.
Driving a web experience off the same SCREEN.BUILD metadata that defines the user interface for PWS CTO.ENTRY is an ambitious undertaking. The payoff for CTO technical folks is HUGE! Their experience, skills, and techniques configuring models with CCVs applies equally to CTO.ENTRY and ProductConfigurator.
Lane and I have been experimenting with adding accumulator CCV types that can render running totals off of QPA.TABLE.CALC results. This supports running pricing displays as users configure an end item.
I feel we are finishing things started long ago. And that is a good feeling.
Friday, February 24, 2023
Manage 2000 release 8.1 Service Pack 6 - sneak peek
The development cut is scheduled for Friday March 3rd. Release Control processing will follow through the remainder of March. And so expect GA sometime around the traditional April 15 timeframe.
Service pack 6 includes a number of important application features, more LINUX, and more Tools features.
AP.1099.AUDIT.ADDR
- a new function for 1099 year-end processing.
Retail Delivery Fee
- a new Sales Order feature to provide support for complying with new state RDF regulations.
Surcharge
- a new percent-based base extra charge code feature used in order and quote entry when an additional surcharge is needed.
CountEntry
- a web version of cycle count COUNT.ENTRY. This is a major rewrite of the CountEntry web function first released with service pack 5.
ApproveCredit
- a web version of the CREDIT function.
Fax Option on Red Hat Enterprise Linux
Conditional Support for running Manage 2000 on RHE Linux was announced with Manage 2000 release 8.1 service pack 5. However VSI-Fax features in Manage 2000 are NOT supported in that environment.With service pack 6 the Manage 2000, faxing features like FXJ and QUICK.FAX are supported on RHE Linux via a Windows Server 2019 proxy.
Web Pseudo Functions
Wrapping web functions like LOOK.AR and LOOK.SO now accept type ahead parameters, so expressions like ‘LOOK.AR 1024’ can be used in the place of ‘CustomerPortal 1024’.
MyPrintJobs
Now displays most recent print jobs first, and offers an option to delete the print job.
User Prompt Stack
Extended on primary key and validated prompts using the Most Recently Used list from the USER_CONTEXT file. This provides up-arrow-key access to recently used keys on many PWS screen prompts which matches the web function behavior.
- Authentication and Authorization
- Application Server Storage
- Primary Key Selection
- Data Validation and Formatting
- Data Retrieval
- Shopping Cart Operations
Thursday, March 31, 2022
Manage 2000 Release 8.1 Service Pack 5 Now Available
Just in case you missed the official announcement:
"We are pleased to announce that Release 8.1 Service Pack 5 was released today, March 23th, 2022 and is now available for upgrades."
The surprise in the official announcement is the limited support for LINUX. We still have the vsi-fax caveat, faxing out of Manage 2000 on LINUX is NOT there yet. But if you want to run Manage 2000 8.1 sp5 on rhe LINUX 8 and do not need faxing then we are ready to support you in that.
Bud and I continue digging through the options trying to find the best path to get faxing support on LINUX, without ESKER directly supporting vfx... on rhe LINUX 8. You'll probably hear us shout when we finally find the right path.
Customer enthusiasm for moving forward on Manage 2000 has been gratifying to see with four 8.1 sp5 upgrade orders already in the first week of GA.
So what will we imagine for service pack 6?
My journey this last year has included the opportunity to explore what other software teams are doing with REST API development. While 8.1 sp5 includes a nice REST API platform, it is mostly 'toolsey' stuff that you can use to build your own, but does not provide the full manufacturing application provider API that I am seeing other software teams working on. So one of my research and development projects is imagining how we can take the REST API platform and build out an API to specific sales and manufacturing processes.
The current leg of my continuing journey has me exploring POSTMAN and using it to test and document existing REST services:
A little quicker and easier than running JSONServices, viewing source, and reverse engineering :-)
Saturday, January 1, 2022
Manage 2000 8.1 service pack 5 - sneak peek
Final touches are going into service pack 5 of Manage 2000 release 8.1. Tees are getting dotted and eyes are getting crossed.
Another year of development items are releasing in this service pack along with the year's supply of bug fixes. There are a number of new features I am excited about, along with a couple more upgrade challenges than usual for a service pack:
- The website has been upgraded to ASP.NET 4.8
- The JavaScheduler has been upgraded to version 5.3.1.
The upgrade to ASP.NET 4.8 was necessary to work with the new 5.3.1 version of the JavaScheduler. The new version of the JavaScheduler is faster in our testing than the old version, and it is built with the Open Java SDK eliminating any licensing controversy.
So what other new things can you do with Manage 2000 service pack 5?
- Access documentation and training material more easily
- Cross browser compatible Help and Documentation make these items available from outside the EOT Viewer web view, using any browser.
- See Also documentation access from portal menus - pertinent documentation links on local portal menus keep overviews, courses, and HowTos at your user's fingertips.
- Text from Manage 2000 to your phone, your user's phone, your customer's phone, your sales rep's phone...
- Receive text messages from the Manage 2000 Event Condition Action system. The text message may contain only the ECAs Title or the Title and Body based on the CONTACTS ECA TextMsg option for Notify events
- Administrators! Receive text messages from Master Agent notifications
- Configure plug-able interfaces with Twilio, Nexmo, and other texting services using TEXTING.SERVICES.
- Specify carrier gateway conversion sites in PHONE.CARRIERS.
- Send text messages from UniBasic using SUB.TEXT.OUTPUT.
- Send quick text messages from the command line using TXT and TID.
- Use UserPreferences Contact Information page to maintain your cell phone carrier. This enables carrier gateway text messaging.
- Share data through REST APIs
- REST Consumer API
- Configure access to RESTful service endpoints through the REST.SERVICES table.
- Display RESTful data in ANY Manage 2000 function using Manage 2000 Software Objects. Configure in MSO.BUILD using subroutine REST.MSO which will access RESTful services and display results in Manage 2000 functions.
- Read REST sourced news articles in Newsreader.
- Display REST sourced news articles in Portal news panels.
- Call RESTful services from UniBasic using new tools subroutine REST.SERVICE.
- REST Provider API introduced in 7.3 and expanded in 8.0 and 8.1
- Access packages of UniData database information from Power BI or Excel. Use REST endpoint /mt/jsonservices/getdata from Microsoft's GetData wizard. Specify the package contents like a UniQuery request in JSON.PACKAGE.MAINT.
- Use the new preselect to optimize access
- Use the new postselect to reprocess/reformat the results
- Obtain single source validation information from Manage 2000. Use REST endpoint /mt/jsonservices/gettmtable to access TM tables as JSON arrays. Use REST endpoint /mt/jsonservices/validateitemservice to validate inventory part numbers, sales order numbers and more.
- Call UniBasic subroutines from web browsers. Use REST endpoint /mt/jsonservices/calludtsub to call backend UniBasic subroutines. Call GetItemsAsJSON to pickup UniData database information in JSON format.
- Configure Manage 2000 to use the VERTEX O-Series Tax Calculation service
- Have CUSTOMERS verify addresses using the US Postal Service Web API Interface for Zip+4. It will even add the 4 digit zip code suffix to improve delivery accuracy.
- Cleanly install new custom development in one step using ARCHIVER REPLACE
- Validate user input based on prompt definitions using the same validation logic used in SCREEN.IP by calling SIP.VALIDATE.
- Collapsible Panel Memory - okay maybe this is more a bug fix than a new feature, but finally the collapsible panels work the way I want them to on my phone and my desktop, right out of the box!
- See the resulting displays of I-Descriptors already available on a file using new phrase records I, I2,I3… built by DICT.INIT.ALPHA.
- Stop worrying about JAVA licensing controversies. The new JavaScheduler is 100% OPEN JDK.
- See inquiry function results in your browser.
- EOTViewer is a web client prototype of an alternative to the Greenbar Browser. A number of people have been asking for this, so I thought I'd give it a shot. It is still develop-mental, but if you are daring, give it a try using USER.OPTIONS screen 2 prompt 24 and 25. Then give me some feedback (aka encouragement to take it to the next level:-).
Friday, April 2, 2021
Events, Conditions, Actions and Text Message Notifications
Text Messaging is the real-time mobile communication method of choice for most people. It is more effective for brief high priority communications and alerts than email notifications.
Now that Manage 2000 8.1 sp5's SUB.TEXT.OUTPUT utility understands text messaging and works with carrier email-to-text-message conversion gateways and third party texting services like Twilio and Nexmo, ECA Notifications can be directed to any contact's cell phone as a text message, providing an extremely flexible system for instantly alerting individuals inside or outside the company, wherever they are, to real-time ERP system events.
To enable control of this feature at a contact level the TextMsg and TextMsgSubj methods have been added to ECA Default Method and ECA Event Override Method prompts in CONTACTS.
With ECA 105 Notification delivery overridden from the default 'Normal' to 'TextMsg'
I can have a short ECA notification sent to my phone. Or I can use TextMsgSubj and just send the ECA subject line as a text message to my phone. I could even use TextMsgSubj in combination with Normal and receive the Subject as a text message and the detail as an email.
Just enter a new quote or whatever the triggering transaction is
Monday, February 22, 2021
Text Messaging from Manage 2000?
Recently, while thinking about system administrator notifications, I was chagrined to realize that SUB.TEXT.OUTPUT did NOT have a Text Message method. So I started to do a little research into Text Messaging and some more about using Unibasic Extensions to interact with REST services.
Now, there are a couple of different approaches to launching text messages programmatically:
1. Send an email to the phoneNbr@carrierGateway where the carrierGateway is a destination which converts emails to text messages for that particular carrier.
2. Send REST requests to third party services like Twilio and Nexmo which by-pass the carrier gateway.
So if it is no bother to 'know' what carrier the phone number you are text messaging belongs to then option 1 is fine. If on the other hand you want to text message phones which may change carriers at anytime without letting you know then it might be worthwhile to go with option 2.
To begin with I added the PHONE.CARRIERS table to 8.1 sp5 which can hold the gateway suffix for each carrier. This can be used directly in an application to build the email destination and then the EMAIL method can be used to 'email' a text message to a phone. There is a new prompt in CONTACTS to hold the carrier.
I also added a property for Carrier to the EMAIL method. So, alternatively you can call SUB.TEXT.OUTPUT with Method=Email, To=phoneNbr and Carrier=carrierCode to send 'text messages' via carrier gateways.
Option 2 is complicated by the fact that each Text Messaging service provider uses a different interface. Yes, they are all REST, but some use Basic Authentication tokens while others pass credentials in the form variables. They each use their own nomenclature for various variables in the request.
So I have attempted to make a pluggable interface with a new table named TEXTING.SERVICES. This table lets you configure the URL, Basic Authentication token, and map form variables from literals or properties of SUB.TEXT.OUTPUT. We'll see how flexible it turns out to be.
At any rate, there is a new method for SUB.TEXT.OUTPUT in 8.1 sp5 named TEXTMSG which requires a property 'Service' to select the interface table from TEXTING.SERVICES.
Next level up will be how to incorporate Text Messaging as a destination in the ECA system!
(More details of REST service programming using the UniBasic Extensions next time.)
Thursday, January 16, 2020
Manage 2000 8.1 service pack 4 - sneak peek
Development continues dropping crumbs of new feature content into the product with this service pack. There are a variety of tidbits which may have some appeal:
If you are a hardcore MRP geek you may be interested in the new order policy W with its awareness of minimums and maximums in addition to order multiples.
If you are bringing in orders through sales quotes you may get excited that CONVERT.SQ.TO.ORDER now supports ECA use. So you can configure notifications in ECA.BUILD.
If your purchasing database is bursting at the seams you may find some relief in RTV.ENTRY large purchasing files optimization.
If you have gotten addicted to 8.1 attachments you might like the attachment support added to SCHEDULER.
If you have wifi throughout your warehouses you may be interested in the new UnplannedMove web function or the improvements to PICountEntry.
If you are an electronics manufacturer or other heavy user of reference designators you may be excited to see them appear in the web ShowPs function.
If you are a fan of Power BI but not so much of ODBC you can probably get excited about JSON.PACKAGE.MAINT and the new REST endpoint in JSONServices for GetData.
If your interests lie with work orders there are a number of new reports you may find helpful:
- SLB.WOS – Shows last closed work order planned and actual labor times and overall average of all closed work orders on file, including number of work orders that went into that average
- ORDERS.ON.MRP.HOLD – Show a report of all sales orders with the MRP hold flag set
- PRO.NBR.LOOKUP – Used to find a sales order using a PRO or tracking number from FedEx
- UNPLANNED.OUTPLANT – Shows work orders with outplant costs, but no standard outplant costs
- PLANNED.LOAD – Show un-released work order load by department
- RELEASE.LOAD – Show remaining work order load by Work Center or ALL
- UPDATE.REV.BY.DRAWING – Update Rev information for all parts with a specific drawing number
- ATTACH.MASS.UPDATE - import attachments from Excel
- AUDIT.DRAWING - identify parts with or without drawings attached
- MONITOR.PHANTOMS - notifies you when phantoms start, stop or abort
- ANALYSE.FILE.SYSTEM - use with REFRESH.PARAMS
- REFRESH.PARAMS - refresh development database without resetting software configuration
- DATA.CHECK - check files for unprintable characters
- DEBUG.CONTROL topics: built in debug instrumentation that may be turned on/off
- BTI.PHANTOM...
- CallRPCSub - Client Server traffic
- GetItemsAsJSON - Query DB as JSON
- MONITOR.PHANTOMS - Monitor phantoms for status change
- MsoAccess - MSO Security Checking
- RenderMso - Rendering MSO as HTML
- SubExecService - Client Subroutine Calls
Monday, January 21, 2019
Manage 2000 8.1 service pack 3 - sneak peek
Once again a number of projects are being released along with bug fixes in this development rich service pack. Here are my top ten favorite new features:
- Collapsible Panel Navigation in over 40 web functions provides better use of screen territory and improved mobile experience.
- MSO support in web functions provides improved web function tailoring capabilities. MSO displays and web functions may be configured to be available without customizing using the same MSO techniques used in PWS workflow configuration.
- Local ‘Portal’ menus are now scoped to browser tab. This allows multiple browser tabs to display different portals or the same portal with different keys without the local menus interfering with each other.
- ProductConfigurator supports alternate front-end screens from CTO.ENTRY. This allows ProductConfigurator to use a simplified version of the screens used in CTO.ENTRY. Sales Reps may then do preliminary configurations in ProductConfigurator and then back end configuration specialists can reconfigure the generated item in CTO.ENTRY.
- Summary Notes Option added to attachment notes menu on web pages. This feature matches the PWS notes summary display available in PWS.
- Global Menu: Home and Logoff buttons are easily accessible no matter how menus are configured.
- WEB.SETTINGS.INQ - Displays the web preference hierarchy settings for one or more contacts, so if your web settings hierarchy has grown into a ball of spaghetti you can get it sorted out.
- Customer Administrator role allows delegation of add, change, or deactivation of other contacts. CMADM role users may use UserPreference | ContactMaint to maintain other users from their company.
- Visual Studio 2017 compatibility updates to website vbproj files.
- Visual Studio Wizard Updates.
- Collapsible Panel generation in BTO Inquiry and BTO Posting wizards.
- BTO Posting wizard support for templated columns with roiTextBox controls bound to metadata for improved data entry features.
Thursday, November 30, 2017
Manage 2000 Release 8.1 Service Pack 2 - sneak peek
Here are my top ten favorite new features in this development rich service pack:
- UniData 8.2 Python Integration
- Web DE 5.3 JavaScheduler pass through CallRPC
- UrlAuthorizationModule
- W(+/-)n Work Date (Shop Calendar) Entry Shortcut
- ECA support for attachments and calendar events
- Associated Sales Items support in ShoppingCart
- AUTHORIZE.DATA.ACCESS
- REFRESH.SPOOL.DATA Master Agent Service
- SECURITY.MASS.UPDATE
- PMT.STACK.MASS.UPDATE
Aside from lots of treats for administrators there are over half a dozen new features in Product Data Management alone. So watch for the upcoming official announcement and after you load up this new service pack look through the FEATURE.SUMMARY document.
Wednesday, December 14, 2016
Manage 2000 Release 8.1 GA
Allan started shipping out copies Dec 09, 2016
Doug and I performed live on WebEx earlier in the week. Check at the EpicWeb site to stream down our mellifluous voices as we banter about and demo some of the cool new features built in to the 8.1 release:
- Integrated PDF Output
- Geographic Mapping
- Photo Support
- Web Attachment and Export Changes
- On-site Newsreader
- Infrastructure Updates
- Many Application Enhancements
Monday, March 28, 2016
Manage 2000 8.1 Crystallizing
For instance since the 7.1 release the WEB.CONSTANTS screen has had a simple unvalidated, mostly unedited string entry indicating where the web server can be found.
Starting in Manage 2000 8.1 this entry will be validated to the WEB.SITES table, which in-turn will validate the actual IP Address, or Domain Name to the WEB.SERVER.DOMAINS table.
This will formalize the relationship between the Manage 2000 Unidata computer system and one or more Manage 2000 web server computer systems and those web server's IIS applications.
Creating this formal snow flake means we will be able to validate and cross reference in WEB.CONSTANTS, and SYS.USERS, and CNT.SYSTEM.REFS, and CONTACTS.
It also means we will be able to create a VIRTUAL.DIRECTORIES table with validation and cross referencing to define how one might reach a specific UNC document store through a virtual directory.
And what may not be obvious about these snow flakes is that they can clump together to produce a rich attachment configuration snowball supporting many different attachment UNC document stores that can be accessed by virtual directory path and made available from any browser, say from the Attachments menu on Manage 2000 Portal pages.
And how better to fill up these UNC document stores than automatically generating PDF documents out Manage 2000 8.1 MASTER.AGENT tasks running print processing to a PDF queue. :-)
Sunday, June 9, 2013
Manage 2000 Release 8.0 Beta
In the mean time I am going back over the mobile styling options. JQueryMobile has 5 color swatches to their standard look. And it is a good look. But it isn't IPad-ish, and it isn't Android Holo-ish, and it isn't Microsoft Metro-ish or whatever the new "Metro" is.
What seems natural and obvious in hindsight is that if I am using my IPad I would be most comfortable and the M2k feature would be most seamless if the Manage 2000 web functions fit in with that style, and if I am using a Galaxy tablet I would be most comfortable if the Manage 2000 web functions came up looking like Holo, etc...
So I spent last week working on integrating some new stylesheets to emulate some of the major mobile device styles and revising the web preferences to support an "AutoSelect" option that will pick a style based on the browser UserAgent identification in the HTML header.
The various styles and swatches (colorization schemes) need some polishing to eliminate things like dark blue titles on black backgrounds and so forth, but the basic mechanism is in place and the effect is pure magic.
Tuesday, March 12, 2013
Manage 2000 Control Extenders Explained
Originally this was an alternative to placing single valued fields in FormView containers. The VS2005-2008 MS databinding changes mandated that a table be bound to a FormView and that textboxes and such in that FormView could then be bound to a field in that table. There are a bunch of things I find objectionable here.
Anyway, I stole the code for this extender from Rick Strahl at WestWind (Hawaii, poor chap), a great source for .Net intelligent thought http://www.west-wind.com/weblog/. The databinder moves fields into and out of datasets from web controls.
Visual Studio 2003 only did one way binding using the ‘eval’ method, and we had to write code to move data back. VS 2005/8 added the ‘bind’ method to move data from web controls back into datasets.
I prefered the method name ‘Fill’ to describe moving fields into the dataset. The name was always used in DataAdapters to mean moving the fields into the dataset from the datasource. So I chose to use the DBCE.Fill expression to request the databinder to fill up the dataset with field values from web controls.
While working on the m2kScrolledSetControlExtender I enhanced this extender to bind fields from dataset to columns in a JSON array stored in a hidden field (Bind To Client). The scrolledset then moves fields between a hidden field and textboxes inside the browser using javascript. The hiddenfield acts like FILE.ITEM(1) providing working storage at the browser end. Together these extenders manage the transmission from datasets to scrolledsets and back.
Since then, based on application work by the development team, I have been adding additional support in the data binder for other situations like an easy way to bind SA MV sets to multi-line textboxes and just lately support for RadioButtonLists.
The Microsoft databinding patterns can still be used and, in fact, for grid displays and other sorts of table level binding I expect we will continue to use ObjectDataSource controls.
M2kScrolledSetControlExtender:
My original goal for the scrolled set extender was to create a way to have scrolled set processing in web pages that matched the keyboarding and development efficiencies of SUB.MT500 and SCROLL.MAINT. Yeah, not quite there yet :)
In one sense the scrolled set extender stands in for SCREEN.BUILD C4. It provides a design time place for the developer to specify scrolled set behavior. It also serves to emit the required javascript for instantiating a javascript object with the operational mechanics implementing the scrolled set experience. The definition for the javascript object and all of its methods actual exists in roiGlobal.js. The scrolledset extender just needs to create an object of that class in the browser world and initialize it with parameters supplied by the application developer.
One of the principal design decisions was to leverage all the data entry power of the roiTextBox, and to loosely package an arbitrary number of entry fields in a table that would contain the set entry controls and display cells. I wrote up a how to with more details on creating scrolled sets named WEB.SCROLLED.SET and added it to the SYS.WEB.HOWTOS menu.
M2kMetaDataControlExtender:
This extender is basically a re-write of the EditParams features that we originally built into roiTextBox and the metadata data access component. It provides PMT like definitions that developers can use to describe the behavior they want and then the Tools layer can take care of the implementation.
When Microsoft broke the component design surface into a separate tab in Visual Studio 2005/2008 they COMPLETELY isolated WebControl design time from Data Access Component design time. This meant that the roiTextBox had no way of talking to the typed datasets or the metadata component. So the whole metadata world and the databinding got shoe-horned into “WebControls” (which the control extenders are) so they can sit in the same designer and interact with webcontrols.
Friday, January 25, 2013
Manage 2000 Version 8.0
The development team decided a couple of months ago that with all the mobile web changes plus other un-celebrated technology changes that the 7.x branch should end with 7.3 and the upcoming release should begin the 8.x dynasty. Look for it towards year-end of 2013.
So now that changing the numbering is done, it is time to change some more of the machinery as well. I am currently hip deep in ASP.NET 4.5, HTML 5, and VS 2012, trying to solve too many equations with way too many unknowns.
The VS 2012 IDE has a lot to be said for it. It feels faster, and seems to get confused less often by our sub-project pattern web architecture. The solution explorer drill down into project classes, the highlighting of the current variable in neighboring code, the javascript highlighting during edits are all wonderful developer productivity improvements. There is a project level option to run a code analyzer at compile time that functions much like the Manage 2000 BX Audits to provide developers with coding standards compliance feedback.
We are going to have to make a few mass changes to vbproj files and a few references in aspx and ascx files. Infragistics references will have to target ASP.NET 4 instead of 3.5. But it doesn't seem like the Visual Studio Tools Team broke anything critical to Manage 2000 this time around. Whew!
There is an interesting convergence of client side technology happening as Manage 2000 web tools provide lots of client side javascript and JSON validation and editing features which run into some of the unobtrusive validation being supplied with VS 2012 and ASP.NET 4.5 with the inclusion of jquery. And as we proceed down the HTML 5 path we are both running into the validation constraints being coded natively into browsers as they process HTML 5 markup. So it seems I will be spending some time trying to smooth over some redundant repetition of validation on the client end.
Saturday, August 27, 2011
IE 9.0 Firefox 4,5,6... and counting and Chrome
Sunday, January 30, 2011
iManage2000
Thursday, June 3, 2010
Sub Valued Level Prompting Details
How do you fixup the screen and do cross referencing and other validations when you use SUB.VALUE.PROMPTING on a SUB.MT500 screen?
Here is an example where we want to prompt for multiple file names and within each file for multiple item ids.
Remember to add right justified fields using the PWS screen in SCREEN.BUILD if you want the count of sub-valued items to line up nicely.
You can add logic to execute only at the sub-valued level by checking X_Data_2 for the FROM.SCROLL.MAINT flag.
*
2200* Before prompt logic for Item_Attachments
*
IF INDEX(Prompt.X_Data_2, 'FROM.SCROLL.MAINT', 1) > 0 THEN
* Handle inner event from SUB.VALUE.PROMPTING execution of SCROLL.MAINT
* Reset SIP.VAL.FILE to enable cross referencing
FILE.VALUE = FIELD(Prompt.Display_Text_2, ",", 2)
FILE.LIST = MAIL.FILE.File_Attachments
CURRENT.FILE = FILE.LIST<1,FILE.VALUE>
CALL GET.DB.FILE(SIP.VAL.FILE, CURRENT.FILE)
ERROR = 0
RETURN
END
* Handle MAILBOX.ATT prompt event
GOSUB 2210;* Fixup Prompt Label with SUB.VALUE level display text
* Setup XREF stuff
Prompt.Conversions_Edits = '0X':@SVM:Prompt.Conversions_Edits
* remove compiled edits to force recompile
Prompt.Conversions_Edits = FIELD(Prompt.Conversions_Edits,roiDataMark4,1)
CALL GET.DB.FILE(SIP.VAL.FILE, CURRENT.FILE)
CALL SUB.VALUE.PROMPTING(ANSWER,SUB.DATA,P.NBR,PMT,SAVE.FN,VALUE)
END
*
RETURN
If you want to fix up details like the screen labels and prompt text while at the sub-valued level you can do this sort thing:
*
2210* Display SubValue Level Label Text
*
SET.NBR = Prompt.Scroll_Field_Type[2,2]
LOCATE SET.NBR IN SCROLL.DATA<9,1> SETTING PRIMARY.IDX ELSE RETURN
PRIMARY.PMT.NBR = SCROLL.DATA<1,PRIMARY.IDX>
PRIMARY.PMT = PID(PRIMARY.PMT.NBR)
STARTING.ROW = PRIMARY.PMT<1,7>
HEAD.ROW = STARTING.ROW-1
DISP.MASK = "L#":Prompt.Display_Length
ID.LABEL = XLATE("DICT ":CURRENT.FILE, "F0", 61, "X")
IF ID.LABEL = "" THEN ID.LABEL = "Item Id"
LABEL.TEXT = FMT(P.NBR,"2\0R"):".":VALUE:' ':ID.LABEL
Prompt.Text = "Enter ":ID.LABEL
REDIS.MISC<10> = L(HEAD.ROW):C(PMT<1,6>):LABEL.TEXT DISP.MASK
PRINT REDIS.MISC<10>:
RETURN
For Validation after prompting you can check the X_DATA_2 flag again and if you are at the multi-valued level simply request a repaint with ERROR=1000, but at the sub-valued level actually carry out input validations programmatically. Remember that your sub-valued level validation logic is being called from SCROLL.MAINT so do not use ERROR codes like 200, 1000 as you would for SUB.MT500, simply 0 or 1.
*
3200* After prompt logic for Item_Attachments
*
IF INDEX(Prompt.X_Data_2, 'FROM.SCROLL.MAINT', 1) = 0 THEN
* Remove SV Label Text
REDIS.MISC<10> = ''
ERROR = 1000
END ELSE
IF NOT(SIPDATA) THEN RETURN
FILE.VALUE = FIELD(Prompt.Display_Text_2, ",", 2)
FILE.LIST = MAIL.FILE.File_Attachments
CURRENT.FILE = FILE.LIST<1,FILE.VALUE>
REC = XLATE(CURRENT.FILE, ANSWER, -1, 'X')
IF REC = '' THEN
* Message 502: %1 item %2 not on file
CALL SCREEN.MSG(GetMessageText(502,CURRENT.FILE:@VM:ANSWER,0):";H;#M446065")
ERROR = 1
END
END
RETURN
Sunday, December 20, 2009
Twas The Night Before Cutoff
Twas The Night Before Cutoff
Twas the night before cutoff, when all through the house,
Not a programmer was keying, nor clicking their mouse.
The updates all filed into StarTeam with care,
In hopes that Seven_Three soon would be there.
Customers all nestled, snug in releases,
While palmtops and I-Phones sat dark in valises.
And Jimmy in his whites, and I in my cap,
Had just settled our brains for a long winter’s nap.
When out on the Net there arose such a clatter,
I sprang from my twitter to see what was the matter.
Away from my Windows I crept like a gnome,
Searched through my desktop and opened up Chrome.
The Graphic in the heading of the new-painted page
Gave mirth to results there listed by age.
When, what should appear down the page not too far,
But a Manage 2000 and 5 rating gold stars.
With data entry screens, so lively and quick,
I knew without thinking it started on PICK.
On UniData it thrives with GFE-free frames,
And whistles, and whirrs, and remembers their names
"Now Namer! now Schoolboy! now Farmboy and Widget!
On Motor Mouth! On Cheese Head! on Professor and Gidget!
To EDX, to SCREEN.BUILD, to BX REBUILD ALL
Now dot away! Dot away! Dot away all!"
The founder with his satchel all stuffed full of papers.
The performer and painter both cooking up capers.
The young black bird that had grown up so tall,
Leading us onward from the end of the hall.
As dry leaves that before the wild hurricane fly,
When they meet with an obstacle, mount to the sky.
So with hope of happy havens away they all flew,
Leaving a product full of toys, and Last Keys support too.
And then from the Palace, gave we measured lecture,
With summary and bullet of each treasured feature.
As I drew in my head, with my neck like a crane,
Down the cat-5 a new release came.
It spoke not a word, but went straight to its work,
And filled all the data, then re-painted with perk.
And laying a finger on top of my mouse,
I attached on my portal a jpg'ed house!
And then on a lark in a moment of need,
I dialed in from home to setup a Feed.
It summarized sales figures and displayed on my mobile,
It remembered my context and let me go global.
Saved out on disk, Install Shield's new folder,
Languishing there whilest the weather grows colder.
I heard it exclaim, ‘ere it shrank out of sight,
"Happy upgrade to all, and to all a good-night!"
- with inspiration from the Sniggletter
- and with apologies to Clement Clark Moore and Henry Livingston




