TAINT020@ysub.ysu.edu (Robert Noe) (02/16/91)
After downloading and using the Phone book program (by somebody whose name
escapes me right now) I found that it was very usefull and handy. However
I did find that it was quite large (me only having a 32k card) and the
program just cried out for DataBrowser (one of James Donnelly's tools in
the Programmer's ToolKit). Well Im almost done rewriting a phonebook
system using tools from the Toolkit and I was planning on posting it (the
phonebook not the ToolKit) to the net soon but I have one question. How
should I upload it so that people with the ToolKit should use it. Ive heard
references to problems with unresolved xlib calls and such and Im not sure
I understand everything fully so any hints would be helpfull! Hopefully
Ill be done this weekend (I just have to write a delete entry routine) and
everyone with the toolkit can be using it soon.
Thanks for any Help!
---
Bob Noe
TAINT020@YSUB.YSU.EDU
"All the brightest boys, to play with the biggest toys,
More than they bargined for" -- RushTAINT020@ysub.ysu.edu (Robert Noe) (02/19/91)
Here is my phone book management program. Remember that it uses two of
James Donnelly's libraries from the Programmers Toolkit. Below you will
find my attempt at documentation and following that the directory itself.
Hopefully nobody will have any problems with this but if you do Ill be
happy to answer any questions. I would also like to here any comments and
suggestions.
Thanks....
---
Bob Noe
TAINT020@YSUB.YSU.EDU
"All the brightest boys, to play with the biggest toys,
More than they bargined for" -- Rush
---
Installing
Load the PBK directory using TEXT with translation code 3.
PBK needs both DBLIB and TLLIB (James Donnelly's libraries)
to be installed to work. It is easiest to have these installed
during the transfer process although it can be made to work by
installing the libraries afterwards and then visiting the programs.
To run just hit the softkey labled PHNE.
Since you have a blank PHDAT (which follows the format for the other
phone program) you will be dropped directly into the input routine.
Just follow the prompts. One thing to note: the search routine is
case sensitive so I enter in all my text in upper case. This really
isn't a large problem since most of the screens use the small font
in which everything is upper case.
Once you have provided one entry you will be presented with the NAMES
list. (In this case it will contain only one name). This interface
is provided by the DBLIB and is quite nice. I'll quickly go thru some
of its functions as they relate to my program.
UP & DOWN arrows
The up and down arrows scroll you up and down through the list.
LEFT SHIFT UP and DOWN are page up and page down.
RIGHT SHIFT UP and DOWN move you to the ends of the list.
VISIT
For entries that are longer than the display VISIT will display the
entire entry (as well as expanding newline characters).
EDIT
Allows you to EDIT an entry.
ALPHA
The ALPHA key places you in search mode. This mode allows you to
search for an entry containing the string you specify.
ON
ON will exit the program.
OFF
OFF will shut the calculator off without leaving the DataBrowser.
The menu keys....
SORT
SORT sorts the list based upon what item is being examined.
example....
If you are looking at a list of NAMES and hit sort everything
gets sorted based on the name field.
The next two keys change depending on what list is being viewed. They
serve to switch between lists of NAMEs, ADDResses, and PHoNE numbers.
ADD
ADD allows you to input a new entry.
DEL
DEL deletes the current entry.
QUIT
QUIT quits PBK. (leaving the stack unchanged) (I hope :) :) )
The ENTER key switches to a DETAIL MODE. (for lack of a better name.)
In DETAIL MODE you are presented with one record at a time. The
databrowser keys work as described as above.
LIST
LIST returns you to the main list (NAME,ADDR,PHNE) depending where the
DataBrowser pointer is.
NEXT and PREV
NEXT and PREV scroll through the records one at a time.
ADD, DEL, and QUIT function as described as above.
The ENTER key functions just like the LIST option in the MENU.
And finally here is the listing.....
Size: 2071.5
Chck: # 4F83h
---
%%HP: T(3)A(D)F(.);
DIR
phne
\<<
IF PHDAT 1
GET SIZE NOT
THEN inp DROP
END 3 1 view
\>>
view
\<< \-> n p
\<< { } 'PHDAT'
n GET { "SORT" } {
"ADDR" "PHNE"
"NAME" "ADD" "DEL"
"QUIT" } DUP n GET
1 \->LIST SDIFF + { 1
} p + p + 1 + {
"Addresses"
"Numbers" "Names" }
n GET + DBR 4 ROLL
PHDAT SWAP n SWAP
PUT 'PHDAT' STO 3
ROLL DROP
CASE DUP 1
==
THEN DROP
{ 2 3 1 } n GET
aview
END DUP 1
NEG ==
THEN DROP
'p' STO n sort n p
view
END DUP 2
NEG ==
THEN DROP
{ 2 1 1 } n GET
SWAP view
END DUP 3
NEG ==
THEN DROP
{ 3 3 2 } n GET
SWAP view
END DUP 4
NEG ==
THEN DROP
DROP inp n SWAP
view
END DUP 5
NEG ==
THEN DROP
del n 1 view
END DUP 0
== SWAP 6 NEG == OR
THEN DROP
END
END
\>>
\>>
aview
\<< \-> n p
\<< { "Name: "
"Addr: " " Ph: " }
PHDAT OBJ\-> n
EXTRACT ROLLD 3
\->LIST { "LIST"
"NEXT" "PREV" "ADD"
"DEL" "QUIT" } { 1
1 } p + { 1
"Detail" } + DBR 3
ROLL DROP 3 ROLL n
recsto
CASE DUP
ABS 1 ==
THEN DROP
{ 3 1 2 } SWAP GET
n view
END DUP 2
NEG ==
THEN DROP
n 1 +
IF DUP
PHDAT 1 GET SIZE >
THEN
DROP 1
END
SWAP aview
END DUP 3
NEG ==
THEN DROP
n 1 -
IF DUP
0 ==
THEN
DROP PHDAT 1 GET
SIZE
END
SWAP aview
END DUP 4
NEG ==
THEN DROP
DROP inp 1 aview
END DUP 5
NEG ==
THEN DROP
DROP n del 1 1
aview
END DUP 6
NEG == 2 PICK 0 ==
OR
THEN DROP
DROP
END
END
\>>
\>>
sort
\<< PHDAT 1 GET
SIZE \-> p n
\<< 1 n
FOR l PHDAT
OBJ\-> l EXTRACT
\->LIST
NEXT n p
LSORT DUP 1 + DUPN
1 EXTRACT \->LIST 1
MSWAP DUP 1 + DUPN
2 EXTRACT \->LIST 1
MSWAP 3 EXTRACT
\->LIST 1 MM\->L + SWAP
DROP SWAP 1 \->LIST
SWAP + 'PHDAT' STO
\>>
\>>
del
\<< \-> n
\<< 1 3
FOR l PHDAT
l GET DUP 1 n 1 -
SUB SWAP DUP SIZE n
1 + SWAP SUB +
NEXT 3
\->LIST 'PHDAT' STO
\>>
\>>
recsto
\<< \-> rec n
\<< PHDAT 1 GET
n rec 2 GET PUT
PHDAT 2 GET n rec 3
GET PUT PHDAT 3 GET
n rec 1 GET PUT 3
\->LIST 'PHDAT' STO
\>>
\>>
inp
\<< "Enter name:"
{ "" 1 \Ga } INPUT
PHDAT 3 GET SWAP +
"Enter address:" {
"" 1 \Ga } INPUT
PHDAT 1 GET SWAP +
"Enter phone numb:"
{ "" 1 \Ga } INPUT
PHDAT 2 GET SWAP +
3 ROLL 3 \->LIST
'PHDAT' STO PHDAT 1
GET SIZE
\>>
CST { phne }
PHDAT { { } { } {
} }
END