Please note that if you really want to research the Pick or Pick-like databases, you can't beat the archives of the comp.databases.pick newsgroup conveniently stored forever at google.com
======== Newsgroups: comp.databases.pick Subject: Newbie: looking for advice From: magneto@mail.microserve.net (Anthony Alteri) Date: 26 Mar 1996 06:49:46 GMT Greetings. I hold in my hand the rather cryptic manual for the Pick Systems R83 Pick Operating System for the PC's. Problem is: I know nothing at all about Pick or the OS. I do however have this nicely bound 6-inch thick manual, and too much compuer OS experience to turn dow nthe chance to learn this. so my questions are these: 1) Why would I want to learn pick (what is it still used for, is there still a true market for it) 2) how should I go about learning this with the OS installed and the manual on hand. I have worked extensively with Dos, and ten versions of Unix, so any analogies will be understood, if not correctly spelled on my part. Thank you for any help you can offer. Please e~mail unless someone else posts otherwise. We duna need to waste bandwidth on this. --Anthony Altieri . ======== Newsgroups: comp.databases.pick Subject: Re: Newbie: looking for advice From: heggers@netcom.com (Henry Eggers) Date: Fri, 29 Mar 1996 19:28:56 GMT Anthony Alteri (magneto@mail.microserve.net) wrote: : Greetings. : I hold in my hand the rather cryptic manual for the Pick Systems R83 Pick : Operating System for the PC's. Problem is: I know nothing at all about : Pick or the OS. I do however have this nicely bound 6-inch thick manual, : and too much compuer OS experience to turn down the chance to learn this. : so my questions are these: : 1) Why would I want to learn pick (what is it still used for, is there : still a true market for it) Prolog: Heh. What is pick, part 37. If we keep doing it, we may yet figure it out. Pick is used by people with small to middle-sized businesses, initially because it allowed them to define the application and run the business for a lot less computing money than with any other solution. The reason for that, that the data representation is isomorphic to the actual data of the business, by a very simple morphism. The morphism is so simple that it is sometimes said that the data of the business is the _same_ as the data in the computer. That is, there is very little 'transformation' which needs to be applied to the data in order to turn it into the meat for an application. Specifically, unlike RDB data. Typically, the people who understood the business sat down, with the book, and wrote the application, a matter which is beginning to be a bit bothersome, 20 years later, as individual files commonly exceed a GB. There around 500k machines running it world-wide. It runs on just about everything which moves, and can typically be bought from more than one manufacturer for any particular 'substrate case'. Applications almost transport across the full range. Carefully written applications do, at the source level. So, it turns out to be the 'real open system.' :-) As to the matter of OS's. It was, and in the R83 version, tends still to be, represented as an OS. Nah, it's not. What it does do is demonstrate that a bunch of people can use the same machine, concurrently, without benefit of the clergification of an OS. OS's are (almost) government make-work projects for programmers, and a tax on customers. : 2) how should I go about learning this with the OS installed and the manual : in hand. Which is what I did. The manual has, unfortunately, gotten thicker. To no good use. First, you need to LOGON, being aware that the machine predates the invention of lower-case letters. :-) Readapting to the uppercase takes a few moments. Leaving is done by LOGOFF, not logout. Presuming that this is an unused system, you will logon to SYSPROG (named, in the far distant past for SYStem PROGrammer, we suppose). When you get there, you will find yourself in the MD (for Master Dictionary) of SYSPROG. This contains all the _verbs_, _procs_, _connectives_ and _file references_ which you can "see/use" from there. For the moment SYSPROG will do. Later, you will want to CREATE-ACCOUNT and follow the prompts. You want SYS2, by the way. A pick machine is made up of a collection of 'files' of identical topology. In files, there are 'items'. By analogy, pick 'items' are like Unix/DOS files, or like records, depending on how you look at them. Each item is directly addressable by its name, called the 'item-id', with some variations on capitalization and punctuation. Every item in the machine (world) is addressable by the dupple, file-name, item-name. There may be as many items in a file as you want, can think of, or have disk space for. These have an order-of-1 access speed. The files accessable from an account are simply that list. Files are not hierarchical. There is a system file, which contains items, each of which defines an account, or more precisely, the MD file which instantiates that account. All the items in the system have the same metaformat: a sparse, three- dimensional array of ascii strings, delimited by a set of three, hierarchical metacharacters. The delimiters separate the while item into 'attributes', a fairly pure Spinozian reference to a 'field', being a kind of data. Each of these fields may contain multiple instances of values of the field, separated by 'value marks'. This constitutes multivalued data, a topic which stands on its own. The procedural language, called 'basic' because that was the only recognizable language name without an ansii standard in 1974. It's actually more like a structured Fortran, without real numbers or the Format statement. It includes data language intrinsics to operate on these data things (to avoid the word 'object' at any cost). It is strongly untyped at compile time, and completely dynamically typed at run time. This data representation and manipulation language make it very easy to articulate what one wants to say about one's data. To this is added a 'report language', called a number of things, probably 'access' in the manual to which you refer. I will call it English for historical reasons, and for amusement. This language includes the verbs LIST, SORT and SELECT. These allow you to display the contents of a file by any order, and with any selection, and specifying which 'attributes' you want to see. So, now, LIST MD. Presumably something happened. Then LIST ONLY MD, and SORT MD...; then SORT MD BY 2. Then LIST MD WITH 1 = "P]". That was all the verbs, and procs (the ones which started 'PQ'). Procs are stored proceedure things, shell scripts, blah, blah. Little jobstreaming routines. At this point you want to CREATE-FILE BP 1 3 (Ignore the 1 and 3 behind the curtain. They involve a suggestion to the machine what the future population of the BP (Basic Program, of course) file will be. It also suggests that there are two of 'them'. Well, there are. The dict and the data sections. ) Then you can say ED BP HELLO. This is where you get unhappy, because all there is, is an early '70's not-even-line editor. Ito start inserting at the left margin to stop. F to 'flip the buffers' (think of it as a trip to the museum) R/string1/string2/ to replace strings FI to file the item PRINT "HELLO" Then BASIC BP HELLO to compile, and RUN BP HELLO to run. It's not an interpreter. There are a few other subtlties, but that pretty well covers it. Holler, er, contribute to the communal knowledge if I missed anythingh. : I have worked extensively with Dos, and ten versions of Unix, so any : analogies will be understood, if not correctly spelled on my part. Oops. Could make it harder. :-) Pick was always best understood by people who couldn't spell computer, much less were one. :-) On the _other_ hand, it could be an interesting research project in conceptualization. Regards, hve.
comp.databases.pick Pick-like, post-relational, database systems. Statistics Actual readers of this group: 13000 Average number of messages per day: 17 Kilobytes per day: 23k Percentage of Internet sites who receive this group: 67% Crossposting: 6%
comp.databases.pick
A newsgroup dedicated to pick-like, post-relational database systems. Although the subject matter is somewhat obscure, the discussion here is lively covering design techniques, administration, and even theory. New Pick products are announced.
"comp.databases.pick" will be a newsgroup for the discussion of the creation, administration, and use of the multitude of databases, operating systems, and applications environments which are generally known as "Pick-compatible", "Pick-like", "Pick-inspired", or "post-relational". These include, at the least:
On our old system (Fujitsu with R83) we could use "SP-ASSIGN AS" to easily route print jobs to the aux port, which worked great for PC printers. During our conversion to uniVerse (8.3.1.1 on RS6000/G30) we were pretty distraught to discover that UV didn't support the AS option and we were told that we'd have to make do without it. This was too big of a challenge to ignore & we invested a lot of effort into simulating the AS option. Eventually we came up with a solution that has been working smoothly for 6 months now. Unfortunately, it's not terminal-type independent (we're using Wyse-50/Adds-VP emulation).
I'll describe what we did & then give some suggestions for how to make it work for the vt100 & tvi925 interchangably.
1. in the /usr/spool/uv directory create 3 files: a. pcptron: char(27):'3' (the Wyse/VP chars to turn transparent printing on. File must contain the actual characters, not this BASIC coding for them.) b. pcptroff: char(27);'4' (chars to turn transparent printing off) c. pcptr.drv (set permissions to rwsrwsrwt): sleep 1 tty=`cat /pathofyourchoice/PCPTR-TABLES/$1` cat pcptron - pcptroff > "${tty}" 2. in uniVerse, create a unique print queue to use driver pcptr.drv. 3. in uniVerse, create PCPTR-TABLES (a small single-level file will do) 4. Copile & catalog the following BASIC program: SP.ASSIGN.AS * Start with some test to make sure user is a PC. Our test is: IF @TERM.TYPE#'wy50-vpw' THEN STOP EXECUTE 'UMASK 111' OPEN '','PCPTR-TABLES' TO SPOOL.FILE ELSE STOP * Write TTY# to PCPTR-TABLES file, using effective USER-ID as ID WRITE @TTY ON SPOOL.FILE, SYSTEM(28) EXECUTE 'UMASK 007';* or whatever your normal UMask is EXECUTE 'SP-ASSIGN F88';* or whatever form queue uses pcptr.drv To spool a printjob to your pc's printer, just: SP.ASSIGN.AS (This writes your TTY# to a file & does the appropriate SP-ASSIGNment) LIST SOMEFILE (P or RUN SOMEPROGRAM (P. This will pass the printjob to the pcptr.drv driver which will use the PCPTR-TABLES file to translate the effective user-ID (which the UV spooler automatically passes to the driver) back to the tty# & then redirect the job back to your PC along with the codes to turn the aux port on & off again. To spool a &hold& file entry, just do SP.ASSIGN.AS followed by SP-EDIT (R. Now, to modify the above to be able to use vt100 & tvi925 emulation interchangably: 1. instead of pcptron & pcptroff, create 4 files: pcptron.vt100 (I think codes are char(27):'5i') pcptroff.vt100 (I think codes are char(27):'4i') pcptron.tvi925 (I think codes are char(27):'`') pcptroff.tvi925 (I think codes are char(27):'a') 2. rename PCPTR-TABLES to PCPTR-TTYS & create another file called PCPTR-TERMS. 3. Modify SP.ASSIGN.AS to WRITE @TERM.TYPE ON TERMS.FILE,SYSTEM(28) 4. In pcptr.drv, add: termtype=`cat /pathofyourchoice/PCPTR-TERMS/$1` Then change the 'cat' line to: if [[ ${termtype} = vt100 ]] then cat pcptron.vt100 - pcptroff.vt100 > "${tty}" else cat pcptron.tvi925 - pcptroff.tvi925 > "${tty}" fiDick Bay * Acordia Lloyd Ins Svcs * DBay@aici.com * 415/541-9499 Return to CDP FAQ Main Index
There is currently one for uniVerse called the info-vmark mailing list.
To subscribe, send the following command in email to "listserv@NETCOM.COM":
subscribe info-vmark This list is for the discussion of topics of interest to users of Vmark
Software's products (UniVerse, PI-Open, HyperStar, etc.).
A: The best way to do this is to subscribe to the newsgroup 'misc.test'
and to post something there. If you have successfully posted there, various
newsfeed sites around the world will send a verification of the post back
to you.
In this way, you can avoid polluting newsgroups which people read with
useless test posts. You may be assured that a successful post to misc.test
proves you will be able to post to comp.databases.pick.
You can avoid the answerback of your test message by including the words
'test' and 'ignore as the first two words of your subject line. Then you
can simply check to see if the post was posted by looking for it to appear.
Put something you will recognize after the 'test - ignore' header. A subject
line such as, "test - ignore: recognizable_subject_line," should work nicely.
Here follows Garrett's tutorial on GFE's in the classic Pick file structure
and minor variants.
GFE's are detected by both the reader of the group and the updater,
as both rely on the format of the group, and the items within it, as being
correct. When the format is not, it is detected either by explicit checking
or by trapping on errors in frame linkage.
Assuming that updates upon items and groups in a file are completed
satisfactorily, and that the file is in good shape to begin with, then
the only time a format error may be detected is while a file group is being
updated.
If an item changes content, but not format or size, it may be updated
in place without affecting group structure. If the file/group/item structure
supports indirect items--items which reside outside of the group structure
other than a group-resident pointer to the item, the item may be expanded
or shrunk without affecting the group (as long as the shrinkage does not
cause it to be placed back in the group).
Other than these two restrictions, one may assume that updates to an
item will cause a change to the structure of the file group, which means
that the update must have atomicity exclusive to all other readers and
updaters of that group to avoid GFE's.
What this means is that the update must first acquire locked access
to the item to prevent other updates, and then locked access to the item
to prevent other readers, as all updates involve both reading and writing.
The update, or writing, of the item must have atomicity. This is usually
accomplished via locking. If the update involves changing the structure
of the file group then other readers may not be allowed to see the group
during this time. Other updaters may not be allowed access in order to
avoid the two updates from interfering with each other.
Even if the update could be performed with one instruction, locking
is still required as the instruction could, "slice out," meaning that the
quantum of time required for completion of the instruction is greater than
the timeslice accorded the process, or the process may slice out due to
frame fault.
In short, without appropriate locking, there is no atomicity to the
update.
There are several types of GFE's. I categorize them as follows:
1. Errors in the format of an item.
2. Errors in the format of an item which make the group appear to have
format problems.
3. Errors in the format of a group, such as incorrect frame linkage.
There are several causes of GFE's. I catagorize them as follows:
1. Incomplete update of an item/group, leaving it in an inconsistant
state (a process did not complete update to the group due to a machine
crash, for example, or a bug in the software, for another).
2. In-process update of the group, and improper locking schemes which
allow other processes to view the group in an inconsistant state. (Early
Pick machines showed these, and were called phantom GFE's because when
looked for later, they were gone).
3. Incorrect update of a group, always due to a bug.
4. Overwrite of a group, caused by:
5. Human beings trying to fix something.
In short, whenever completion of an instruction must occur before another
process can look at what the instruction is updating, then the instruction,
or set of instructions, must be made atomic in some way, such as locking.
a. machine problems, such as incorrect memory mapping.
b. shared virtual space, caused either by using the old virtual contents
of an address register (bugs in the software) or corrupted overflow table
(also caused by bugs in the software, but also by machine crashes).
G.D. Hildebrand Systems Wrangler Internet Information Services Administrator
Checking to see how cpp does stuff like catenate |Canonical: gdh@ACM.ORG
tokens... Oh! Smells like ANSI's been here. We can|Temporal: gdh@crl.com
catify or stringify, separately or together! (Perl)| http://www.crl.com/~gdh
epistemology n [Gk episteme
knowledge, fr. epistanai to understand, know, fr. epi- +
histanai to cause to stand -- more at STAND] : the study or a theory
of the nature and grounds of knowledge esp. with reference to its limits
and validity.
[Source: Webster's New Collegiate Dictionary]