Information flavor accounts for Pick flavor people

The differences

Prime Information, and the Information flavor accounts under Universe have a few subtle differences which may trip up programmers who are used to either Pick flavor accounts under Universe, or other Pick implementations. I will point out some of those differences below. This is not a comprehensive list of all such differences.

Authors

This article written by Will Johnson, for Fast Forward Technologies.  Email me at fft2001@aol.com
See also the Pick Operating System Portal

In Pick flavor accounts under Universe, or on other Pick implementations, programmers are able to determine what happens at account login by looking at the MD/VOC entry with the same name as the account.  So if the account is called "MARKETING" then in the MD/VOC there will be an entry also called "MARKETING" which states what will happen upon a user (or an automatic program) logging into that account.  However, in the Information flavor of Universe, the corresponding entry in the VOC is simply always called "LOGIN".  After executing the UV.LOGIN entry in the VOC of the UV account, the LOGIN entry in the VOC of the user's account would be executed next.

You might be used to using in the query language a syntax like 'LIST CUSTOMER WITH CODE "P"', in the Information flavor you must specify the "=" operator.  So this syntax would have to be 'LIST CUSTOMER WITH CODE = "P" '.

You might be used to using print limiting to limit which lines of a multi-valued set are displayed in the output.  In the Information flavor this is done by using the WHEN expression. 'LIST CUSTOMER WITH CODE = "P" WHEN BAL.OUTST > "20" '  would select customer with Code "P" but only display the detail elements (multi-values) where the balance outstanding is greater than twenty.  Therefore it would suppress those details that do not match this additional criteria.  If do you not use the WHEN expression, you will see a line for every value of a multi-valued field.

When using the BREAK-ON expression, the syntax might seem backward from that with which you are familiar.  Instead of BREAK-ON field "text 'options' text", you would use BREAK-ON "text 'options' text" field.

In the BASIC language, you will be familiar with fixed arrays.  In Information-flavor accounts, Universe uses the Universe standard which is redimensionable arrays.

BASIC routines may optionally be cataloged globally.  This means the routine is available to all accounts, regardless of where it initially began life.  This is a new concept to Pick programmers, since the previous standard was that for a routine to be globally available, pointers would have to be inserted into each account to point at the location of the remote code.

The syntax of the COPY verb is slightly different.  Instead of the familiar syntax
COPY MYFILE *
TO:(YOURFILE
You would use COPY MYFILE TO YOURFILE ALL
The "ALL" directive taking the place of the "*" directive, and the entire command must be on a single line.

The syntax of the CREATE-FILE verb requires the specification of the file type, which will be a new concept to Pick programmers who are used to only a single file type.  Type 18 files, use the previous standard Pick hashing algorithm.  The other file types use various other hashing algorithms, except two special types: Type 1 which is a sequential file (no hashing), and Type 25 which is a index file.

Instead of the syntax
LIST CUSTOMER WITH FIRST.NAME "[BOB]"
you would use the syntax
LIST CUSTOMER WITH FIRST.NAME LIKE ...BOB...
or alternatively
LIST CUSTOMER WITH FIRST.NAME LIKE ..."BOB"...

The quotes are necessary only when there is a likelihood of confusion with a pattern-matching request.  For example you can use a syntax like
LIST CUSTOMER WITH ADDRESS LIKE ...5A...
this pattern means five alphabetic characters (5A) at least.

However if you want to find an address that actually matches something like "250 Main Street, Apt 5A" then you will need to use the syntax
LIST CUSTOMER WITH ADDRESS LIKE ..."5A"...
which specifies this is NOT a pattern-match, it's a search for an exact string.



See Also