J Albright & Associates                                                         HOME
2710 Windemere Lane
Erie, Colorado 80516

Verify Your Backups (March 2013)

You should do a test restore of a SHIMS data file at least once every six months to verify that the backup tapes are good. We have seen systems where the last good backup was 5 years ago.

 See Control Characters using the Editor (December 2010)

If you are getting control characters in files or in spooler print jobs, you can turn on a feature in the Universe editor to see them.  When you edit an item by entering >ED CUSTOMER 12345 <cr>, and it displays ‘nnn lines’, enter a <shift>6 and it will respond with “Up-arrow display mode=enabled”. This is very useful to determine what the character is; so it can be removed or in a print job to determine what it is and why it’s there. Test it by entering a <TAB> in an address line in a customer record.  Edit that record and with the up-arrow enabled, you will see “^009” where the tabs are located.  The <TAB> is a CHAR(9).

Laser Printers (November 2010)

Many of our clients are switching over from dot-matrix tractor-feed printers to lasers to print  pick tickets, p/os, bids and transfers. Most of these forms print too many lines for the lasers; but this can be easily adjusted with a few program changes. Multiple copies can be printed from the same tray or other trays with different colored paper.  The obvious benefit is sharper printing and font changes can also be programmed to highlight selected fields.

Terminal Emulators (October 2010)

SHIMS Users need to convert from INVUE to ACCUTERM.  INVUE is no longer supported by INFOR and does NOT work for file transfers with Windows Vista or Windows 7. For Accuterm, contact Accusoft Enterprises (Sunland, California), www.asent.com . This program is designed to work with Pick/Ultimate Plus/Universe systems and provide many features in addition to emulations such as file transfer capability from your SHIMS system to Excel and other PC file formats. I see many clients using ProComm which is NOT designed to work with Pick-type systems. You can download full functioning 30 day evaluation copies of Accuterm  from their web site. You can purchase individual or site licenses at very reasonable costs. Tech support from Accuterm is free.

Locked File Identifier (December 2006)

There is a utility in the UBP file that will tell you the name of the Universe file that is locked  when you run the > LIST.READU EVERY command.  Column 2 under the Active Read Locks lists an Inode number.  At TCL, enter > RUN UBP MATCH.INODE and enter the Inode number.  The program will respond with the Universe file name.  This is useful when you cannot identify the Universe file from the Item-Id.

Spooler File Access (October 2005)

The Universe LPP file contains the spooler jobs.  Since there is no spooler file viewer on Universe unless you have purchased JRT Spooler or other software, an easy way to look at the jobs is to edit the LPP file.  First set your terminal to 132 columns by entering “132.” at TCL.  (There is a period after the 132.)  Then > SELECT LPP = “[job#]” at TCL and then > ED LPP <cr>.  You will be able to page through the job using the editor.  A word of caution. Don’t “FD” (delete) the LPP job or you will foul-up the Universe spooler cross-reference file.

User Defined product File Maintenance (June 2005)

There is a very useful utility on SHIMS for creating your own Product File Quick Load programs.  On the flat menus, it is on M(16,32), User Defined Product File Maintenance.  There are 2 programs.  One to set up the custom quick-load program and the other to run it.  If you have never used this utility, take a look at it.  It will save data entry time compared to multiple entries using the normal Product File Maintenance.  Call me if you have questions on these programs.

List Processing (January 2004)

There are 3 related list processing verbs that are very useful.

a)      LIST.DIFF – Compares two saved select lists and creates a third list that contains elements in list 1 that are not contained in list2.

b)      LIST.INTER – Compares two saved select lists and creates a third list that contains elements from list 1 that are also found in list 2.

c)      LIST.UNION – Compares two saved select lists and creates a third list that contains all elements from list 1 and all elements from list 2 that are not in list 1.

The format to use these three verbs are the same:

> LIST.XXXX    list 1 name

WITH:  list 2 name

TO: list 3 name

Universe Write Failure (October 2003)

If a program aborts because of a “Universe Write Failure”, it is usually due to one of two reasons.  The most common is because the item-id that the program is attempting to write out has non-ascii characters, usually multi-value or sub-value marks. If it is a small file, just list the file to the screen and you can usually see the bad item-id. If it is a large file, you will probably need to write a program to find the bad record. Either fix or delete that item.   The other less common reason is that the file-system is out of disk space.

ality you prefer.

Blind Break Point (July 2003)

It is possible to break-on a value in a Retrieve report without actually displaying the value. Instead of listing the same value down the page, it can be placed in the header of the report. For example, to break-on SLSM and place the salesman’s name in the header; but not in the body of the report, create the following dictionary item in the ORDER.FILE.

Z.SLSM2

001 S

002 21

003 \ (to prevent display)

004-007 (null)

008 TSLSM;C;1;1 (translate to the SLSM file to get the name)

009 L

010 0 (no column width)

The Retrieve statement might look like this:

> SORT ORDER.FILE BY SLSM BREAK-ON Z.SLSM2 "’BP’" DATE-ORD TOTAL INV-AMT HEADING "Orders for Salesman: ‘B’ – Printed: ‘DL’" (P

The report will page break by salesman; but the salesman’s name will only appear in the heading of the report, thus saving columns for other information. The ‘B’ after the BREAK-ON and in the HEADING statement performs this trick.

File dictionary Clean-Up (May 2003)

You can delete 1000’s of old unneeded dictionary items from your SHIMS file dictionaries that were added when SHIMS was using System Builder. If you are on Release 17.7 running Universe, these may be deleted. Select all of the dictionary items that begin with "SB." or with "." For example, for the PRODUCT file,

> SELECT DICT PRODUCT = "SB.]" ".]" and then enter

> DELETE DICT PRODUCT after the items are selected. This will clean up the DOC-FILE display. DO NOT do this if on older SHIMS releases and still using SYSTEM BUILDER.

Universe & PC Utilities (March 2003)

1) PORT.STATUS – This is a handy Universe TCL command that will display the PID#, the port number and the tty number of all current users.

2) AUTOLOGOUT nnn – This Universe command will automatically log off a Universe session after "nnn" minutes of no activity on that port. This can be inserted into each users login script. Will help reduce the problem of maxed out Universe licenses when trying to log on.

3) E-Mail Spaminator - I found one that really works. It’s called "I Hate Spam" from www.sunbelt-software.com. It works like Norton Antivirus in that you will get updates of the spammers added to your "enemies list". Less than 1% of the junk e-mail is getting through to my inbox now. It is designed for Outlook or Outlook Express only. Only $19.95 on the web.

START.BP & STP.BP (February 2003)

These two basic programs were added to SHIMS when it was converted from Ultimate to Universe to initialize and reset the printers for report printing. Unfortunately, they were added to nearly all SHIMS programs, whether or not the program actually did any printing. This causes a problem if you are trying to send landscaped reports to a laser printer; because the STP.BP resets the page length to 60 lines. The STP.BP subroutine should only be called at the end of a program that does printing. It should NOT be called just to end a program. You will need to manually remove the call. An example is the next to last program line in program BP BR.VALIDATION.

File Purging (December 2002)

There are a couple SHIMS files that have no purge utilities. One is the SHIMS Adjustment History file. You can manually purge it by selecting the items by DATE and then delete them. Two universe systems file, the &COMO& and the &PH& for the comos and the phantom processes also need to be monitored. The &COMO& may need to be purged on a one-by-one basis; since there are automatic comos from EOM and GOODNIGHT that you may want to keep. The &PH& can be cleared if there are no background processes being run. If you do NOT do P/O Reconciliation, you need to clear the P/O-REC file on a regular basis as this file is built with every stock receipt. If you create non-stocks on a regular basis, you need to run the SHIMS utilities to purge the non-stocks and temporarys. See custom mod #2 below for a utility to remove non-accessible history records.

Check your available disk space by entering POVF at TCL for all systems or "df" at the unix prompt for unix based systems. You want to keep your disk utilization below 90% on the unix system volumes.

Phantom (Background) Processes (October 2002)

The proc MUST be in the MD (VOC) file with no prompts and then can be activated as a background process by entering > PHANTOM {procname} <cr> . You will be assigned a PID number which you can track by shelling out (SH) and running a #ps –p {pid#}. It will display if the process is still running. The process can be stopped using the #kill (pid#) unix command. Example: A proc that would run the Fix Cross References every night at 2am:

PQ
100 H SLEEP 02:00
P
H FIX-COMM3
P
G 100
 

The IF and IFN proc commands. (September 2002)

(1) With an IF command, you can use the ">" (greater than), "<" (less than) and "=" (equal to); but for ">=" and "<=", you MUST use "]" and "[" respectively. You will NOT get an error message; but you will NOT get the correct results with the "<=" and ">=". Also, you cannot use the "LT", "GT", etc operands with an "IF". These will give you an error message.

(2) You MUST use the "IFN" instead of the "IF" if you are checking for numbers greater than 9; since the IF scans left to right and the "IFN" scans right to left. Using the "IF", the number 12 will evaluate to less than 9; since a 1 is less than a 9.

Condensed 132 column reports on your HP Laser Printer (July 2002)

If you would like to print your 132 column wide reports on 8 ½ x 11 paper on your laser printer, it can be done by sending a command to compress the print. The reports are very readable and takes less paper than printing in landscape mode. The command for HP compatible printers is:

PRINT <ESC> : "(8U" : <ESC> : "(s0p16.67h8.5v0s0b0T"

To reset to the printer default, use: PRINT <ESC> : " E "

Where <ESC> is a CHAR(27), escape character. The easiest way to implement this is to code these lines into a utility program and then call the program before and after you run the report. Or integrate these commands into the proc.

Problem with Priority Update Processor (June 2002)

There is a problem with the processing of the SHIMS Priority Updates after #4187. If your system has a CBP item that matches a BP in the update, the CBP will NOT be reported on the COMO and update printout. So, if you are relying on this report to determine which CBP items may need to be updated, you have probably missed several. You need to print out a list of the updates (or print the pages from my web site) and manually check your CBP items. The current Priority Update level is 4245.

If you setup other files to hold basic programs, they should have the letters CBP in them, such as JAA-CBP. Then the UTIL SW.UPDATE will find them when it checks the MD item for the characters CBP.O and will report them on the update listing.

Also, remember that the update report does NOT report a change to a proc. You need to check all updated items and if there are procs, you will need to update your "Z." proc. A recent example of this was the updates to PROK PRINT-CHECKS.

Universe File Statistics (April 2002)

Here’s a quick way to find a file’s characteristics at TCL on a Universe System. Create the following MD item if it does not already exist.

> ED MD UVFILE 

001 V
002 UVfile
003 U
004 TIC

To find the characteristics of the PRODUCT file, you would enter at TCL: UVFILE PRODUCT

The results will include the file type, the file modulo and the file separation.

Double-Deck Reports (March 2002)

If you need to display more data in a proc than fits across the page, the solution is to double-deck the data. Set up the following dictionary item in the ORDER.FILE and test it out. It will list the Salesman for the Order above the Writer for the Order in the same column.

Z.SLSM.WRITER
001 S
002 0
003 SLSM..]WRITER              (Must be 2 periods after SLSM to make the field 6 wide & <ctrl>])

004-007                                     (null)
008 A;(N(SLSM):N(SP30))[‘1’,’6’]:N(W/B)
009 L                                                                    (MUST be left justified)
010 6                                                                    (MUST be set to 6 to force the wrap)

 

Setup another dictionary in the ORDER.FILE that is 30 spaces, called Z.SP30

Z.SP30
001 S
002 0
003-007 (null)
008 A;"                             " (there are 30 spaces between the quote marks)
009 L
010 30

This works because you are forcing the data to wrap to the next line. You can also triple-deck and more using this same concept.

INVUEs unixdos & dosunix Utilities (February 2002)

The "unixdos" command that is part of INVUE is a handy utility that will transfer files from "unix" to your PC or network files. The command can be run from the unix prompt or can be embedded into basic program code. The executable file is located in the /usr/bin directory.

The format of the command is simply: # unixdos (from unix file) (to PC file)

For example, to move a copy of a program to a PC file, the command would look something like:

# unixdos /dbms/MYCO/BP/SE1 C:/SHIMS/SE1

where /dbms/MYCO is the location of your SHIMS account, (MYCO is your UV account name), BP is the SHIMS BP file and SE1 is the Sales Entry program. The PC folder (directory) is C:\SHIMS and the file name is SE1. This is also useful in moving spooler hold files to the PCs. Contact NxTrend for documentation on "unixdos" and it’s companion program "dosunix".

Temporary Port-Related Files (December 2001)

It is often necessary to create temporary files when writing programs. To allow multiple users to build these files at the same time, it is suggested that the files be built as follows. In a proc:

PROK123

RI
H SENDWHO (to get the user’s port number into buffer 1)
P
H CREATE-FILE PORTFILE
A\1
H 1,1 503,4
P
H RUN CBP PROGRAM
STON
A1
P
H DELETE-FILE PORTFILE
A\1
P
X

The program would then open and use this file which would be deleted in the program or proc when the calculations are complete. No one else could write to this file; since it is based on the port number of the current user.

Merging GET-LISTS (September 2001)

Merging Get-Lists: If you have 2 saved-lists and you want to combine them to make a single saved-list and eliminate the duplicate items, there is a Universe verb to do this. For example, if the first list is called CUST1 and the second list is called CUST2, you can make a third list called CUST3 by using the LIST.UNION verb. At TCL:

> LIST.UNION CUST1 <cr>

with: CUST2 <cr>

to: CUST3

Comparison of Two Dictionary Items (September 1999)

In Universe Retreive statements, two dictionary items can be compared. For example, the statement

 >LIST PRODUCT WITH REP-COST > AVE-COST  REP-COST  AVE-COST
will work. This feature was not available in earlier Pick or Ultimate operating system versions. But if the difference is to be checked, it can be done by creating the following dictionary item.


DIFF.RA
001 A 
002 0 
003-006 (null) 
007 MR3 
008 A;N(REP-COST) - N(AVE-COST) 
009 R 
010 6

Using this dictionary item, the products with the replacement cost greater than the average cost can be selected with the following statement:   >SELECT PRODUCT WITH DIFF.RA > "10.00"

Spooler Printing Priority (August 1999)

Did you know that the default for printing Unix/Universe spooler jobs is "Smallest to Largest" and not "First In First Out"?  This may not be what you want, especially if you have several EOM reports setup in the EOM proc and you would like them to print in the same sequence as you inserted them into the proc. To determine the mode that your system is currently using, you need to "shell-out" to Unix by entering the "sh" command at TCL. At the Unix prompt enter the following:  "ps -ef  |  grep usd". That is: 'ps', space,'-ef', space, '|', space, 'grep', space, 'usd'.  If it lists to the terminal: "bin/usd/usr/spool/uv", then you are in "smallest to largest" mode. If it lists "bin/usd -t", then you are in FIFO mode. To change the mode, you must be a superuser or login through 'root'. No one can be using the spooler when you make this change, since you must stop and restrart the spooler. To make the change, enter the following commands at the Unix prompt($ or #):

#cat  /.uvhome        this will put you in the uv home directory. It should be /usr/lpp/uv on AIX systems (there is a space after the 'cat' and before the forward slash, period, 'uvhome')

#bin/usa  -z                this will kill the spooler (there is a space between usa and -z)

#bin/usd  -t                this will restart the spooler in FIFO mode

If you now reenter the original 'ps' command listed above, it should now show the spooler in FIFO print mode.

The Sentence Stacker   (July 1999)

If you are at TCL and are trying to compose a report, there is a handy tool called the sentence stacker.  This feature takes the TCL commands you enter and places them in a list which is accessable to the operator by entering a .L.  There are many options to the sentence stacker which are very helpful when you are working on a report.

For example, at TCL you enter the following sentence:

SORT CUSTOMER BY-DSND NAME ADDR.1 ADDR.2.  When you hit the return key, the sentence will execute and be saved at the top of the stack.  After executing the  command, you will be back at TCL.  

Percentages and Averages   (June 1999)

In Universe there are 2 keywords which will give you percentages and averages.  The PCT keyword calculates the total value of a field and the AVG keyword calculates the averages for any numeric field. For example:

>LIST NEW-INVOICES TOTAL INV-AMT PCT INV-AMT AVG INV-AMT will produce a report of all the invoice, the total amount of the invoices, the percentage of the total sale and at the total line the invoice average.

                              (Pct)               (Avg)
INVOICE     INV-AMT          INV-AMT             INV-AMT 
100123       125.00            10.51              125.00
100124        63.75             5.36               63.75
100125       220.25            18.51              220.25
100126       526.25            44.24              526.25
100127       254.36            21.38              254.36

******      1189.61           100.00              237.92