Welcome to JRI's Help page for Avante and System Builder

This web page is designed to give quick links to on-line help for Avante, System Builder, and DaytonAccess/StoreFront. It was originally built to store my cheats and notes to help me navigate around the system cleanly.

As time progresses, it will contain other "things" as well, but all are intended to help find information quickly to get the job done on the Avante system at Dayton Superior.

Both Avante and System Builder are written in the PICK programming language. More…
DaytonAccess is a web interface using ASP technology combined with Redback to connect to the Avante database. More…

Transfer Phone to Home

  • Press "Voicemail" button
  • Enter extension (44380)
  • Enter password
  • Press "#"
  • Enter 731 to transfer
  • Enter 732 to un-transfer

Common Processes

Process Description
BOM9003 (maint)
BOM9028 (inq)
Product Packaging Maint
uses SYSTBL PACK.TYPE
INV2001 INV Status
INV2007 INV Trail
PUR9068 PO Proxy Maint
SFC2001 WIP Status Display
SOP2008 Customer Price Lookup
SOP8301 Ship-To Tax Update
SOP9110 Freight Calculator
SOP9138 Customer Ship-To Maint
SOP9169 REMOVE STOREFRONT/EDI HOLDS
SYS8302 OER Email Maint (mgr & ASD)
SYS9098.3 After Hours Support
SYS9200 Super User Proxy
SYS9165 Maintain DSCTBL SHOW.COST
TAX2000 Tax GEO COde
TAX2001 Get Tax
UTLS9028.1 Test DOCATTACH vs G: Drive

Printers: Linux vs. Network

  • Find the link between the Linux queue and the network printer:
    • LIST FRMPRT WITH NETWORK.PRINTER.U = "[\XXX]" BY NETWORK.PRINTER.U NETWORK.PRINTER.U
  • Determine if any users are still assigned to the Linux queue:
    • sort DMSECURITY WITH USR.PRINT.ID = "<>" USR.PRINT.ID
    • If any users still assigned to the print queue, re-assign them
  • Remove the FRMPRT:
    • DELETE FRMPRT P999

Load Engineering Drawings

Delete (or rename) the existing file: /home/sqlimprt/AlltblDrawings.txt

Open the file from Eric

Save as a Tab-delimited txt file to: /home/sqlimprt/AlltblDrawings.txt

RUN DSC.IIUTIL POPULATE.ENG.FILES

Convert use to 64-bit Acrobat Reader

MODIFY USRSECMST F55 = "PDF"

MODIFY USRSECMST F56 = "C:\PROGRAM FILES\ADOBE\ACROBAT DC\ACROBAT\ACROBAT.EXE"

EOM Back Up

\\daysup.com\archive

Then drill down to ArchiveData\ArchiveUnix\archive

Utilities

RUN DEV.DSC.IIUTIL NOTIFY.REGION

RUN DEV.DSC.IIUTIL COPY.QUOTE

iConnect Logs

Periodically, the iConnect logs should be cleared

Go to O:\Avante98dir\floprogs\global\ICONNECT\ICONNECT_LOG

Manually clear all files older than X

Edit the following files and clear logs older than X

10000

10001

95000

iConnect Program

Go to O:\Avante98dir\floprogs\global\ICONNECT\ECL_BP\ECL.XUDRVR.WORK

CTO Notes

Process Description
EPC3003 Master Configurator Maintenance
EPC4000 Build/Maintain a Configuration
RUN DSC.IIUTIL CTO.WITHIN.CTO Email list of CTOs that have sub-CTOs
RUN DSC.IIUTIL COPY.CTO Copy a CTO from PILOT or LIVE to DEV w/ a new configurator id
RUN BP COMPARE.ALL.PROGRAMS From EPORTAL_DEV5, compares all ECPLIBs, S4LIBs, SFLIBs and BPEZs between EPORTAL_DEV5, EPORTAL_PILOT5 and EPORTAL5
RUN DSC.IIUTIL JRI.MATCH.FILE.TO.JSON Compares JSON freight call(s), XML and SOHDR data for s SalesForce quote
xxxxx xxxxx

Utilities

Process Description
RUN DSC.IIUTIL JRI.FIND.PGM.IN.SCREENS Looks for a program in all the screen (DICT) files
xxxxx xxxxx

Freight "Fudge Factor" Logic - SOPS9015.5

IF (@USER0<1> = 1) & (WORK<1> < WORK<4>) THEN
	AVANTE.FREIGHT     = WORK<4>
	SALESFORCE.FREIGHT = WORK<1>
	DIFF               = AVANTE.FREIGHT - SALESFORCE.FREIGHT
	PERCENT.OFF        = DIFF/AVANTE.FREIGHT * 100
	PERCENT.OFF        = OCONV(PERCENT.OFF, "MD0")
	READ DSCTBL.REC FROM DSCTBL, "FREIGHT.DEFAULTS" ELSE DSCTBL.REC = ""
	PERCENT.ALLOWED = DSCTBL.REC<11>
	PERCENT.CODE    = DSCTBL.REC<12>
	IF (PERCENT.ALLOWED = "") THEN PERCENT.ALLOWED = 2       ;* SalesForce freight percentage
	IF (PERCENT.CODE    = "") THEN PERCENT.CODE    = 430     ;* SalesForce freight fudge factor code
		IF (PERCENT.OFF <= PERCENT.ALLOWED) THEN
		************************************************
		* Avante calculated more freight but is within *
		* the acceptable tolerance, so let it through. *
		************************************************
		VALUE = PERCENT.CODE
		READ DSYSTBL FROM SYSTBL,'FRC*':VALUE ELSE DSYSTBL=''
		REFRESH = -2
	END
END
					

Do not refresh MIDNIGHT.DATA (or GINSENG.DATA)

!touch /av1/igi/avante98/flodata/dldata/keepmidnight

!touch /av1/igi/avante98/flodata/dldata/keepginseng

Reset all old Redback logs

Log into new Redback EPORTAL_DEV5

RUN BP RESET.REDBACK.LOGS

ODC Reqs

Outside Direct Cost - a WO REQ to get an outside company to do a service (like galvanizing).

Projects

All work done on Avante is tracked with projects. More…

Restoring Old Data

To restore an old file/account, (high-byte/low-byte), use the convdata -r command

To restore index(s), (high-byte/low-byte), use the convidx -r command

Type HELP CONVDATA (or CONVIDX) for instructions

ADP

UniBasic Append Logic

WRITEV 'Comment' ON F.FILENAME, KEY, -1

Trick I learned from Doug Farmer

On-the-Fly TCL Formatting

Ever had a Dict that was too small or needed a new format of internal data? Here are 2 tricks (must run with native UniData syntax):
  • FMT overrides the value in F5 of the Dict (note the value in green does not wrap because FMT is bigger than the Dict)
  • CNV overrides the value in F3 of the Dict (note the value in red is the raw value and the value in green is formatted on-the-fly)
  • COL.HDG overrides the value in F4 of the Dict (header) - multi-lines are separated with a "}"
    LIST DSCTBL "BLUESTONE.WHS" CONTROL.ID ID.SUPP F1 FMT "L#3" COL.HDG "BS}WHS"

Test Auto Login Encryption

In LIVE, type:
RUN DEV.DSC.IIUTIL ENCRYPT.DECRYPT
  • If you enter an existing user:
    • The prompt will state "Real world user"
    • It will show the user's name
    • It will show the decrypted password (must agree with SB password)
  • If you enter an bogus user:
    • The prompt will state "Encrypted VALUE"
    • It will show the encrypted value based on the user ID backwards
    • It will show the decrypted password based on the encrypted password (should match the bogus user ID)

Add/Remove Avante ID

  • Add a New User:
    • Run FIND.USER2 against the "replicate from user ID
    • Build the DMSECURITY ID for the new user
      • Copy the original user to the new user
      • Enter the user's last & first name
      • Set their password (either their user ID backwards orBARCODE99
    • Run SYS9123 ==> F5 to build the copy the "replicate from" user to the new user. This will:
      • Build the USRSECMST
      • Build their Auto Login info
      • Build the DCUSERMST data for barcode users
    • Review the results from FIND.USER2 and add the specific info as needed for the new user
      • OER info
      • Email lists
      • etc.
  • Delete a user
    • Run FIND.USER2 against the terminated user ID
    • Remove all references to the terminated user except
      • DMSECURITY
      • USRSECMST
      • DCUSERMST
      • DSC.RPs
    • Run SYS9123 ==> F5, enter the terminated user and hit F4 - this will handle the following:
      • DMSECURITY (archived to DMSECURITYHST)
      • USRSECMST (deleted)
      • DCUSERMST (deleted along with updates as needed to other files)
      • DSC.RPs (deleted and audited)

PO Approval

PURS9028.4 is the driving program to begin building the PO Approval Workflow (PAWS). To run the PO Approval step-by-step, you can run this program from TCL. If run from TCL, it will prompt for:
  • The PO#
  • If you want to rebuild PO Approval Workflow (usually "Y")
  • If it should write to disk (usually "N")
It will then run the PAWS logic (including calls to PURS9028.6 which in turn calls PURS9028.7) with pauses an numerous key points in the logic. At each of these pauses, key variables and their values are displayed. These pauses never occur if run from the Avante screen (PUR4000).
Note: if a plant manager is needed for approval, this comes from SYSS9177.1 which gets it from SQL!

Disaster Recovery

* ePortal accounts will look to the Avante account for this test

Orders thru Invoicing

Step Process Desc SHIPTRN STATUS
When Completed
Comment
1 SOP4000
    or
StoreFront
Order Entry n/a
2 SOP9169 StoreFront Release P Only applicable for orders
built via xml logic
3 SOP4007,3 Create Pick List (Multi-Delivery/Blanket)
SOP4009 - Cancel
P Ready for UPS if applicable
4 SOP5001,1 Print Picking Lists (use EMAIL as printer) P Ready for UPS if applicable
5 SOP4010
    or
SOP4037
Shipments Entry (& Cancel)

Staged Shipments Entry
N Too late for UPS (if applicable)
6 SOP9017 BOL Entry (if applicable) N Too late for UPS (if applicable)
7 SOP5007 Print packing Slips (use EMAIL as printer) N Too late for UPS (if applicable)
8 Invoicing - either
8a       SOP4033 Invoice Workbench (manual invoicing) I Too late for UPS (if applicable)
8b       SOPS9014.4 Auto Invoicing I Too late for UPS (if applicable)

Removing CONTACT

Pull the contact up with MERGE to determine the type.

  • 0 = Independent (not linked)
  • 1 = Customer
  • 2 = Supplier

For a supplier contact: APM3000 ==> Options ==> Maintain Contact Details
Enter the contact #
Hit F4 to delete the link between the supplier and the CONTACT.
Due to a bug, you must delete the CONTACTs from TCL.

* ePortal accounts will look to the Avante account for this test

Removing Holds on Sales Orders

SOP9169 - remove SF hold(s)
SOP4011 - remove CR hold
SOP9117 - remove freight hold

Monday Jobs

Simply add VOC item to UFD MONDAY.PROCESS.INPUTS

SLANG and KEYWORDS

You can add up to 30 new slang terms to a ITMNST or SLSCAT with DEV.DSC.IIUTIL ADD.SLANG.
These will be used to rebuild the KEYWORDS every night or while filing a part in BOM3000.

Identify the current screen/process (not the TOPROC)

PARMS(30)<55, 1, 1>

Get the Subroutine Call Tree

CALL SUBROUTINE.STACK(RTN.VALUE, FLAVOR, SHOW.LINE, REMOVE.ME, FUTURE1, FUTURE2, FUTURE3)
RTN.VALUE Field delimited array of the subroutines called
FLAVOR 0 - return the data un-scrubbed (ugly)
1 - return just the subroutine path & names
2 - same as 1 but with indenting
3 - return just the subroutine names (preferred)
4 - same as 3 but with indenting & no leading underscore
SHOW.LINE Show the line # true/false - preferred 0
REMOVE.ME Remove this subroutine (SUBROUTINE.STACK) from the result (true/false - preferred 0)

Ultimate WHS and Type

Going forward, call SYSS9172.1(RTN.DATA, PASS.DATA to calculate the ultimate WHS/Type
The arguments for this are defined as follows:

PASS.DATA<1> = CPN
PASS.DATA<2> = Starting WHS

RTN.DATA<1> = Ultimate sourcing WHS
RTN.DATA<2> = Ultimate sourcing type ("M" or "P")
RTN.DATA<3> = Error message

There are several DICTs that call this logic to return the desired data via TCL:
  • DICT INVWHS ULT.WHS
  • DICT INVWHS ULT.TYPE
  • DICT SHIPTRN ULT.WHS (multi-value via SYSS9172.2 calling SYSS9172.1)
  • DICT SHIPTRN ULT.TYPE (multi-value via SYSS9172.2 calling SYSS9172.1)

READU w/ LOCKED Clause

Below is a snippet of code to read a record and how to react if the record is locked. It will need to be tweaked slightly for each occurance:
label:   READU record FROM F.filename, KEY LOCKED
            * Record locked - display warning then try again
            LOOK.FORS = "filename"
            LOOK.FORS<-1> = KEY
            CALL SYSS9145.1(LOCKED.BY, LOOK.FORS)
            IF LOCKED.BY THEN
               MSG = "filename ":KEY:" is locked by ":LOCKED.BY:"."
               CALL SB.DISP(4, MSG)
            END
            GOTO label
         END THEN
            Record found - proceed normally
         END ELSE
            Record not found - react as needed
         END

Pre-stored Editor Commands

Select the records that need to be changed
Pull up the 1st record in the editor
Build the pre-stored editor command, using ` (or some other delimiter) between each command
You can have as many commands as you want

The following command is named FIX and will:
  • Go to line 11
  • Append ^253PHILLMJ
  • FI (file the record and move to the next record in the active select)
=FIX 11`A ^253PHILLMJ`FI
Within each record, type "=FIX" to execute the command.
Note that if you go to a specific line number (like in the example above) and a record does not have that many fields, it goes to the last line of the record and executes the rest of the commands - BE CAREFUL!

Re-Assigning Buyer Codes to Parts (Buyer Workbench)

When a buyer needs to take over the purchasing of parts at a WHS from another buyer, perform the following steps.
For this example, we will use WHS 126 and re-assign parts tied to BYR MMC to JL.
  • Make sure the new BYR code (JL") exists
  • SELECT ITMPLTMST = "126*]" WITH BUYER = "MMC"
  • MODIFY ITMPLTMST BUYER = "JL"
  • Rebuild the PLANBUYXRF file by running MRP3008
This can also be done one-by-one using MPP9005.

ADD.NONLIVE.ACCESS

On occasion, we need to temporarily grant a specific user a lot of access in a non-LIVE account for testing, etc. This can easily be done by typing:
RUN DEV.DSC.IIUTIL ADD.NONLIVE.ACCES
There are 2 flavors of running this program and they work as follows:
  1. Add non-LIVE access to user1 based on the access of user2
    • Enter user1 who will "gain" non-LIVE access
    • Enter user2 who already has the access (replicate-from)
      • Any access that user2 has that user1 does not have will be added to user1 in non-LIVE accounts
      • Any access that was just added will also added to a "log" on your O: drive called user1_LOG.txt
      • If you run this multiple times for the same user1, it will append any new access to the log file (no overwrite)
      • Audits are not built
  2. Remove access from user1 based on the the log file
    • When the testing is complete, we need to remove the temporary access in non-LIVE accounts
    • Enter the user ID whose access should be removed
      • The program will attempt to read O:\user1_LOG.txt
      • If found:
        • Remove the non-LIVE access based on the log file
        • Delete the log file
        • Audits are not built
      • If not found, stop

THIS.FIELD

THIS.FIELD = LINE<1, 18>

Camel-Case

VARIABLE = OCONV(VARIABLE, "MCT")

Bulk Update of BOM9005

BOM9005 is used to add (or remove) users to receive specific emails based on parts.

To mass-update parts to a specific user, build a SAVEDLIST of part numbers, then type:
RUN DSC.IIUTIL ADD.REMOVE.ITEM.EMAIL
This program will prompt for four things:
  • The User ID you wish to effect
  • The field (type of email) you wish to effect
  • If you wish to (A)dd or (R)emove the user ID from the part
  • The name of the SAVEDLIST

CONFIG and KIT

CONFIG = ITMMST<107>
  • 0 = Standard part
  • 1 = CTO
  • 2 = MTO
If ITMMSTS<7> (REC) = "KIT" then it is a kit

Elapsed Time

SYSS9149.1(RTN.VALUE, START.DATE, START.TIME, END.DATE, END.TIME, OPTIONS)
RTN.VALUE = Multi-valued results w/ each "segment" in a new value
OPTIONS<1> = D, H, M or S (Rounded to Days, Days & Hours, Days, Hours & Minutes or Days, Hours, Minutes & Seconds
OPTIONS<2> = Format #s ("R#2", "R#3", etc. - optional)
OPTIONS<3> = "HTML" will convert spaces in the format (see OPTIONS<2>) to &s;amp;
OPTIONS<4> = 1 = Abbreviate words (Days, Hours, Minutes, Seconds) to the 1st character - default = 0

SYSS9149.1.DRIVER
Manually enter the values for testing. Values are saved in home dir as SYSS9149.1.DRIVER.CTL and will be re-used/saved each time it is run

Freeze MIDNIGHT.DATA

To prevent MIDNIGHT.DATA from being automatically refreshed, save the following stub record in DLDATA:
keepmidnight

UPS Import/Export

Every 5 minutes, a cron job runs to export data to UPS and import data from UPS. This job runs SOPS9132.1 which simply calls SOPS9132.2. It uses DSCTBL UPSWHSLIST to determine which WHS to test. There is special logic that tests the account and reacts similarly in non-LIVE accounts, but clearly, we do not want to clobber LIVE data from non-LIVE accounts.

  1. Clear prior run's data
    • Delete the files in UPS.FILES whose IDs are like ups...txt
    • Archive the files in UPS.FILES whose IDs are like exp...csv
  2. Export SHIPTRN data from Avante by WHS
    • Loop through SHIPTRNs by WHS
      • Write data to UPS.FILES upsWHS.txt
      • !cp UPS.FILES/upsWHS.txt /av1/upsTAG/upsWHS/upsWHS.txt
  3. Import tracking # by WHS from UPS
    • Loop through SHIPTRNs by WHS
      • !ls -l /av1/ups/upsWHS/expWHS.csv
      • if the file is found
        • if LIVE then
          • !mv -f /av1/ups/upsWHS/expWHS.csv UPS.FILES/expWHS_YYYYMMDD_HHMMSS.csv
        • else
          • !cp -f /av1/ups/upsWHS/expWHS.csv UPS.FILES/expWHS_YYYYMMDD_HHMMSS.csv
        • sselect UPS.FILES WITH @ID LIKE "expWHS..."
        • Loop through the files (likely just 1 or none)
          • Loop through the rows in a file
            • Extract the SHIPTRN key
            • Extract the tracking #
            • Update the SHIPTRN with the tracking #
            • Update the SHIPTRN.USR with
              • Net charge
              • Bill weight
              • Actual weight
SOPS9132.3

This is a utility to query all the files from UPS (the expWHS.csv files) and display what it finds. This is needed because it is very time consuming to do these tests manually and the cron job attempts to re-populates the data every 5 minutes. This program uses DSCTBL UPSWHSLIST to determine which WHS to test. This program queries the data, waits 5 seconds, repeat...

If it finds 1 or more files in a pass through the WHSs, it will stop after completing the pass through the WHSs, so the results can be reviewed. It needs to stop so that we have time to review the results without them being deleted or stepped on with another pass (5 seconds later).

KANKAKEE.PURGE

As part of the selling off of the Kankakee facility (WHS 151), we created two new "Tea" accounts (Jay likes tea):

  1. PEKOE.DATA - refreshed from LIVE on cut-over weekend - LIVE realm
  2. GINSENG.DATA - a refresh from PEKOE.DATA at midnight (same concept as MIDNIGHT.DATA) - TRN realm
For approximately 2 months, the new owner of this site will use Avante in the PEKOE.DATA.

However, we do not want them able to see non-Kankakee info. I wrote a program called DEV.DSC.IIUTIL KANKAKEE.PURGE. This program will cleanly abort if not in PEKOE.DATA or GINSENG.DATA. This program will:

  1. Disable all WHSs except 151
  2. Delete all non-151 SOHDRs (tests against SODETs)
  3. Delete all non-151 QUHDRs (tests against QUDETs)
  4. Delete all non-151 ICEHDRHSTs
  5. Delete all non-151 POHDRs
  6. Delete all non-151 POREQHDRs
  7. Delete all non-151 RMTHDRs
More stuff may be needed, but this is what we have determined at this point.

Find user's VDM from UNIX

!who -u | grep user id

Re-boot a Windows Server

From the command prompt, type:
    Shutdown /r /f /t 15

Remote Connect to a Windows box (not a VDM)

From Start menu, type:
    mstsc
    D5809 (your PC id)

Global Dict File

DICT.DICT
This is a core (global) UniData file
You must be root to make a change to DICT.DICT
You must log out/in to take advantage of any change to DICT.DICT

Add/Remove User From Triggers

DSC.IIUTIL ADD.REMOVE.ITEM.EMAILS
There are a number of fields in ITMMST.USR that track if a specific user wants to be notified when thre are changes on a specific part. This program will allow you to add/remove a user from these part specific emails for WO, PO, SO, TO, CC, MRB, INV ADJ or RMA. It prompts for:
  • User ID
  • Which type of trigger/notification to change
  • Add or remove the user from the trigger
  • A SAVEDLIST of part #s (not ITMMST keys) to change

Debug within Program

While in the debugger but the program was not compiled with the -D option, you can re-compile on the fly as follows:
  • EXEC BASIC BP program_name -Z2
  • Z BP program_name
You have now re-compiled in memory and loaded the symbolic table

Add Jobs to Nightly Process

There are 2 DSCTBL records that store processes to run at night:
  • DAILY.SB.PROCESS (runs M-S)
  • DAILY.NONSB.PROCESS (runs S-S)

Find Shares on Server

So long as you know the name of the server, you can find the shares on it by typing the server name:
Ex: \\daydatastg01
Ex: \\daydatastgtst01

A/R Statements

To queue a company (or companies) to generate A/R Statements as part of Auto Invoicing, use ARM9020.

Clean Test Run
If you are just testing (not in LIVE.DATA), you might want to clean out the following dirs so that all that is left after Auto Invoicing is what was just built by the test run:
  • Change DSCTBL AUTO.INVOICE F17 to be a time prior to the current time (like 8:00)1
  • Run ARM9040 to rebuild the Credit Application DOCATTACHES (not doing this threw off some prior testing)
  • Clear FTP.ARCHIVE
  • Delete all the prior PDFs from Avante Attachments/xxx
  • Clear the remote sftp site's temp folder
  • Clear _PH_ (assuming you are going to use a COMO)
  • If you have a dedicated sub-folder in Outlook with rules for Auto invoicing, clear those out
1 This is a feature in case we run Auto Invoicing multiple times a day - it prevents A/R Statements from running except during the 9:10 PM run. At this time, we have never run Auto Invoicing except at 9:10 PM, but if we did want to, the mechanism is already in place to only generate A/R Statement at during the 9:10 run.

SYSS9111.11.DRIVER

SYSS9111.11.DRIVER is used to re-process a SAVEDLIST or invoices or A/R Statements.

You must build a specifically listed SAVEDLIST or use the list created by a failed Auto Invoicing run. The savedlist contains a list of DOCATTACHES and must have a name of:

  • ICEHDRHST_YYYY-MM-DD_HH-MM-SS (for invoices)
  • CUSTMST_YYYY-MM-DD_HH-MM-SS (for statements)

If you are testing in a non-LIVE account, you will also need to change DSCTBL SYSS9111.11.DRIVER. You will need to change fields 3, 4, 6 and 7 - use MERGE and your situation to determine what these changes should be.

You will also need to build the stub (empty) record SYSTBL LAST.INVOICE to simulate that Auto Invoicing has run cleanly.

CONVERT.TO.LF

This utility will convert a specific string to @FMs (or vice versa) in a temp file:
Save the info you wish to convert in your home dir to a file named CONVERT.ME.txt
Comments
  • There are 4 pre-defined codes (TAB, @VM, @SVM & <cr><lf>) that can be chosen
  • At the 1st prompt (red), enter the string you wish to replace or one of the Option #s
  • At the 2nd prompt (yellow), chose if you want to
    • Convert from your string to @FMs or
    • Convert from @FMs to your string
  • Enter Y*** to change the data in CONVERT.ME.txt
The data in CONVERT.ME.txt will then be changed and saved back to the same file (overwriting).

ESC.BANK - Common Part STATUS Logic

Call the following subroutine and use the needed returned value as needed:
CALL UTLS9026.5(ESC.BANK)
  • ESC.BANK<1> - mv list - ESC keys
  • ESC.BANK<2> - mv list - the "life cycle" order - used purely for sorting
  • ESC.BANK<3> - mv list - A/I (Active or Inactive)
  • ESC.BANK<4> - mv list - descriptions
  • ESC.BANK<5> - mv list - Available for POs, MRP, etc (probably just 1-ACTIVE)
  • ESC.BANK<6> - Active codes enclosed in double quotes (this is the most likely)
  • ESC.BANK<7> - mv list of active codes
  • ESC.BANK<8> - Inactive codes enclosed in double quotes
  • ESC.BANK<9> - mv list of inactive codes
  • ESC.BANK<10>- Purchase/MRP/WO codes enclosed in double quotes
  • ESC.BANK<11>- mv list of purchase/MRP/WO codes
  • ESC.BANK<12>- Active by being phased out codes enclosed in double quotes
  • ESC.BANK<13>- mv list of active but being phased out codes

ZIPXRF Re-build

Take the following steps to re-build the ZIPXRF file:
  • Go to Zip-Codes.com
    • Download the zipped CSV file for the US zip codes to your PC
    • Download the zipped CSV file for the Canadian postal codes to your PC
  • Unzip the 2 files
  • Copy the files to DLDATA (overwriting the files from the prior name)
  • Go to DEV.DATA
    • Run SYSS9054.1 (at the 2 prompts, choose DEFAULT) - this will:
      • Clear the ZIPXRF file
      • Rebuild the ZIPXRF file from the csv file(s) from zip-codes.com
      • NewAdd the missing ZIPXRFs from ZIPXRF.ADD (same format as ZIPXRF)
      • NewAdd the missing city aliases (F4) from DSCTBL ZIPXRF.ALIASES
    • Run TAXS9000.1 (re-builds the scrubbed values for ZIPXRF<5> based on DSCTBL ZIPXRF
      • Uses TAXS9000.2 to scrub the city value(s) in ZIPXRF<4>
      • Saves the scrubbed values in ZIPXRF<5>
  • Go to TRN.DATA, PILOT.DATA, etc. and run the 2 BP programs
  • After hours, go to LIVE.DATA and run the 2 BP programs

Test Environment

From Windows 10:
  1. Open Windows Explorer
  2. Click on "IT Teamsite - IT Documentation"
  3. In the right pane, click on "Admin Links.mht"
  4. In the lower left, under the "Development Network" section, click on "Development Gateway"
  5. This takes you to an unsecure web site.
    1. Click "More Information"
    2. Click "Go on to the webpage (not recommended)"
    3. Login as daysup\user id (if you have never done this, you may need Dennis to grant you access)
    4. PW may or may not be the current password
    5. You should see several connections: click on either vdmadmin1 or vdmadim2
    6. If you get security warnings, just continue on through them
    7. This takes you to a Test Environment virtual PC (kinda slow)
    8. Log into Rhat as needed (really slow)

Yearly StoreFront Sales

SELECT SOHDR WITH DATE >= "01/01/18" AND WITH DATE <= "12/31/18" AND WITH CSR = "WEB"
LIST SOHDR TOTAL CNTR TOTAL ORDER.VALUE ID.SUPP DET.SUPP HDR.SUPP NI.SUPP
						

Building New Files

From the desired Realm, run UTL3001. Enter the desired file name, enter a brief description, and hit F7 to define the other accounts that should also have this file. Hit F2 to save. This will create a local data file in the current account and each of the other accounts referenced by the F7. It will also build a shared dict file.

Selecting BPs in a PRC Project

To grab all the basic programs that are associated with a project, type:

            select PRC.PROJECT "PRJ*Project Name" SAVING UNIQUE SOURCE..BP

Where Project Name is the name of the desired project. Note that the 1st word is in lower case to force the native UniData syntax and the double dots in SOURCE..BP.

You can also type: MY.BPS and simply enter the desired PRC project.

Zebra Striping an HTML Table

Add the following immediately after the initial EPORTAL.BP includes (your colors may differ):

         * Build custom styles
         STYLES     = ''
         STYLES<-1> = '.zebra {'
         STYLES<-1> = TAB:'background-color: #f5e6ff;'
         STYLES<-1> = '}'
         STYLES<-1> = 'table, th, td {'
         STYLES<-1> = TAB:'border: 0px solid #6b00b3;'
         STYLES<-1> = TAB:'padding-left: 5px;'
         STYLES<-1> = TAB:'padding-right: 5px;'
         STYLES<-1> = TAB:'border-collapse: collapse;'
         STYLES<-1> = '}'
         STYLES<-1> = 'th {'
         STYLES<-1> = TAB:'color: ':COLOR2:';'
         STYLES<-1> = TAB:'background: ':BGCOLOR2:';'
         STYLES<-1> = TAB:'vertical-align: text-bottom;'
         STYLES<-1> = '}'

         LOCATE "</style>" IN EMAIL.BODY SETTING STYLE.POS THEN
            INS STYLES BEFORE EMAIL.BODY<STYLE.POS>
         END
						

Build your table header something like this:

							NO.ROWS = 0
 
							EMAIL.BODY<-1> = '<table>'
							EMAIL.BODY<-1> = TAB:'<tr>'
							EMAIL.BODY<-1> = TAB:TAB:'<th>ICEDETHST key</th>'
							EMAIL.BODY<-1> = TAB:TAB:'<th>Part #</th>'
							EMAIL.BODY<-1> = TAB:TAB:'<th>Invoicing<br>WHS</th>
							EMAIL.BODY<-1> = TAB:TAB:'<th>Error Message</th>'
							EMAIL.BODY<-1> = TAB:TAB:'<th>Invoice<br>Date</th>'
							EMAIL.BODY<-1> = TAB:'</tr>'
						

As you loop through the data, for each row, do the following:

							NO.ROWS += 1
							IF (MOD(NO.ROWS, 2) = 0) THEN
								ZEBRA = ' class="zebra"'
							END ELSE
								ZEBRA = ''
							END
 
							EMAIL.BODY<-1> = TAB:TAB:'<td':ZEBRA:'>':ICEDETHST.KEY:'</td>'
							EMAIL.BODY<-1> = TAB:TAB:'<td':ZEBRA:'>':PART.NBR:'</td>'
							EMAIL.BODY<-1> = TAB:TAB:'<td':ZEBRA:' align="center">':WHS:'</td>'
							EMAIL.BODY<-1> = TAB:TAB:'<td':ZEBRA:'>':ERROR:'</td>'
							EMAIL.BODY<-1> = TAB:TAB:'<td':ZEBRA:'>':OCONV(INV.DATE, "D2/"):'</td>'
							EMAIL.BODY<-1> = TAB:'</tr>'
						

After all looping, terminate the table as follows:

							EMAIL.BODY<-1> = '</table>'
						

Redback hangs

If an (old) web page hangs, try typing this:
REDBACK.CD
This rebuilds drivers.

WebDE5

wde530

ePortal

StoreFront, Redback, Servers, KEYWORDS, etc.

Software Version

UniData: VERSION
8.1.2

SB+: /SB.INFO
6.5.2.6665

SB Client: SBCVERSION
6.5.2.6681

Redback (old): perfrgw -v
V4.4.3.1555

Redback (new): in path
WDE530

Rhat:
more /etc/redhat-release
7.6 (Maipo)

or
for i in $(ls /etc/*release); do echo ===$i===; cat $i; done
7.6 (Maipo)

Java: java -version

License Info

/LISTU
/LICENCE.INFO
!listuser | pg
/RELEASE.LICENCE
!listuser | sort -b -k4 | pg

UniData Stuff

Native UniData Indexes
Re-size a File
Triggers

Other Stuff

Avante

Notes, processes, etc. for Avante. More…

System Builder

General info about System Builder. More…

Naming Conventions

Common Routines

Utilities

Here are my utilities and a description of how to use them. More…

Basic Programs

Active Parts

Universal code to determine part status. More…

UPS Docs

G:\IT\UPS Machines

Spam Filter Sites