home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol025
/
database.doc
< prev
next >
Wrap
Text File
|
1985-02-09
|
33KB
|
547 lines
(************************************************************)
:
: A gentlemen down south was kind enough to send me this
: copy of Dr Bowles database seed. It was in UCSD format
: so I had to spend several days in cleaning it up. But
: its done now so I am passing this program on to those who
: may be interested. The units are still in UCSD BUT by putting
: them in circulation among the membership of Pascal/Z
: we'll chip away at it until we have it converted and
: boy! won't that be a program.
:
************************************************************)
{EE&CS 63 Database Homework Project}
12 February, 1980
K.L.Bowles
AssigneΣá homeworδá fo≥ thσ remainde≥ oµá thσá quarte≥á wil∞ ì
consis⌠áá oµáá carryinτá ou⌠áá one¼áá two¼áá o≥áá threσáá prograφ ì
design/implementatioε project≤ dependinτ upoε whethe≥ yo⌡ plaε t∩ ì
earε ß coursσ gradσ of'C'¼á 'B'¼á or'Aº respectively«á Al∞ oµ thσ ì
project≤á wil∞á involvσá makinτ change≤ iε ß starte≥á prograφá oµ ì
mediuφ complexity«á Thσ starte≥ prograφ i≤ ß partiall∙á completeΣ ì
databasσ manager¼ thσ desigε oµ whicΦ ha≤ beeε discusseΣ iε EE&C╙ ì
6│ lecture≤ fo≥ thσ las⌠ week¼ anΣ wil∞ bσ thσ principa∞ topiπ oµ ì
the remaininτ lecture≤ for the course.
1. {Objectives}
Practica∞ usσ oµ database≤ typicall∙ require≤ morσ extensivσ ì
programminτá thaε caε reasonabl∙ bσ requireΣ fo≥ homeworδ froφá ß ì
clas≤á a⌠á thσ leve∞ oµ EE&C╙á 63«á Nevertheless¼á onσá importan⌠ ì
objectivσá oµá thσ coursσ i≤ t∩ preparσ student≤ fo≥ thσ kinΣá oµ ì
workinτ environmen⌠ the∙ ma∙ encounte≥ upoε takinτ job≤ a≤á (non-ì
numerical⌐áá programmer≤á afte≥á leavinτá UCSD«áá Worδá witΦá thσ ì
databasσá starte≥ prograφ provideΣ witΦ thi≤ coursσ wil∞ hel≡á t∩ ì
prepare you in several ways:
a⌐ Thσ bes⌠ wa∙ t∩ develo≡ ß largσ prograφ i≤ t∩ proceeΣ iε eas∙ ì
stages¼á addinτ facilitie≤ anΣ debugginτ theφ a⌠ eacΦ stage« Thi≤ ì
methoΣá i≤á ofteεá calleΣá "step-wisσá refinement"«á Thσá starte≥ ì
prograφ wil∞ givσ yo⌡ ß realistiπ basσ froφ whicΦ t∩ star⌠á work¼ ì
anΣá wil∞ allo≈ gettinτ significan⌠ result≤ withou⌠ goinτ througΦ ì
thσ morσ difficul⌠ firs⌠ ste≡ oµ establishinτ thσ overal∞á desigε ì
of an eventual program system.
b⌐ Iε workinτ witΦ largσ programs¼ thσ stylσ useΣ iε writinτ thσ ì
program≤á become≤á increasingl∙ important«á Thσ stylσ issue≤á arσ ì
difficul⌠á t∩ teacΦ usinτ shor⌠ quizze≤ anΣ homeworδá assignment≤ ì
a≤ iε EE&C╙ 61« Yo⌡ shoulΣ spenΣ enougΦ timσ readinτ anΣ studyinτ ì
thσá starte≥á program¼á anΣá associateΣá librarie≤á oµá routines¼ ì
provideΣá t∩ yo⌡ tha⌠ yo⌡ havσ ß gooΣ understandinτ oµá ho≈á the∙ ì
work«á A≤ yo⌡ d∩ this¼ noticσ thσ treatmen⌠ giveε t∩ stylσ issue≤ ì
sucΦá a≤á indentatioε (a≤ ß substitutσ fo≥á structurσá diagrams)¼ ì
relativσá brevit∙ oµ procedure≤ anΣ functions¼á usσ oµ CONS╘á anΣ ì
TYP┼ declarations¼á anΣ handlinτ oµ erro≥ conditions« ExperienceΣ ìèprogrammer≤á ofteε learε morσ abou⌠ ho≈ t∩ usσ ß ne≈á programminτ ì
languagσá o≥ compute≥ systeφ froφ readinτ largσ program≤á writteε ì
b∙á other≤á thaεá froφá extensivσá amount≤á oµá writteεá tex⌠á o≥ ì
lectures.
c⌐á ┴ databasσ prograφ i≤ generall∙ useΣ ove≥ aε extendeΣ perioΣ ì
oµá time¼á anΣá usuall∙á evolve≤á froφá it≤á initia∞á performancσ ì
specification≤ int∩ ß changeΣ o≥ expandeΣ wholσ a≤ timσ goe≤á on« ì
Iεá man∙á cases¼á thσ initia∞ prograφ i≤ largσ enougΦ t∩á requirσ ì
severa∞ programmer≤ t∩ bσ employeΣ t∩ completσ separatσ part≤á oµ ì
thσ program« Fo≥ botΦ oµ thesσ reasons¼ i⌠ i≤ ver∙ importan⌠ tha⌠ ì
method≤ bσ useΣ t∩ simplif∙ thσ problem≤ oµ ß programme≥ assigneΣ ì
t∩á modif∙ o≥ {maintain² ß prograφ previousl∙ createΣ b∙á others« ì
Thi≤á require≤ tha⌠ gooΣ specificatioε anΣ maintenancσá document≤ ì
bσá writteε t∩ g∩ witΦ thσ program¼á anΣ tha⌠ ß reasonablσ numbe≥ ì
oµá comment≤ bσ embeddeΣ iε thσ prograφ t∩ assis⌠ onσá programme≥ ì
t∩ reaΣ anΣ understanΣ thσ worδ oµ another«á Worδ witΦ thσá EE&C╙ ì
6│á databasσá prograφá b∙ thσ clas≤ wil∞ requirσá tha⌠á differen⌠ ì
team≤á oµá student≤á exchangσ documentatioεá anΣá program≤á whicΦ ì
refinσ thσ starte≥ prograφ iε differinτ ways« Thi≤ shoulΣ providσ ì
ß moderatel∙ realistiπ simulatioε oµ thσ rea∞ worlΣ oµ worδá witΦ ì
large programs outside the University.
{Organization}
Thσ complexit∙ oµ thσ worδ needeΣ t∩ completσ thσ desigε anΣ ì
implementatioεá iεá an∙á oµá thσ topiπ area≤á describeΣá herσá i≤ ì
to∩á greaa⌠ t∩ expec⌠ an∙ homeworδ teaφ iε EE&C╙ 6│ t∩ carr∙á thσ ì
worδ iε ß topiπ areß t∩ completion«á However¼ i⌠ wil∞ bσ possiblσ ì
t∩á makσá significan⌠á performancσ improvement≤á iεá thσá prograφ ì
withiεá roughl∙ thσ amoun⌠ oµ timσ ß teaφ shoulΣ expec⌠ t∩á spenΣ ì
on homework in a two-week period.
Thσá methoΣ oµ operatioε wil∞ requirσ tha⌠ ßá homeworδá teaφ ì
writσ specification≤ oε ß proposeΣ changσ t∩ thσ starte≥ program« ì
Thesσá specification≤á wil∞á bσá discusseΣá witΦá Prof«áá Bowles¼ ì
RicharΣá Kaufmann¼á o≥á iεá somσ case≤á witΦá ßá proctor¼á beforσ ì
proceedinτá t∩á writσ anΣ debuτ thσ prograφá change≤á themselves« ì
Student≤ wh∩ carr∙ ou⌠ thσ programminτ change≤ beforσ writinτ thσ ì
specification≤á shoulΣá bσ awarσ tha⌠ thosσ change≤ wil∞ onl∙á bσ ì
regardeΣá a≤á experimenta∞á anΣá onl∙á usefu∞á fo≥á writinτáá thσ ì
specificcation«á Iεá general¼á thσ specification≤ wil∞ havσ t∩ bσ ì
approveΣ first¼á a≤ thσ firs⌠ ste≡ iε completinτ ß homeworδá set« ì
Yo⌡á shoulΣ expec⌠ t∩ bσ requesteΣ t∩ changσ you≥á specification≤ ì
iεá significan⌠ way≤ beforσ proceedinτ t∩ implemen⌠ you≥á prograφ ì
changes«á Thu≤á i⌠á i≤ possiblσ tha⌠ prograφ change≤ madσ iεá thσ ì
coursσá oµá decidinτ ho≈ t∩ writσ thσ specification≤á wil∞á servσ ì
onl∙á a≤á ß learninτ experience¼á anΣ ma∙ no⌠á bσá acceptablσá iε ì
completion of a homework set.
EacΦá se⌠á oµá specification≤ shoulΣ contaiεá a⌠á leas⌠á thσ ì
following parts:
a⌐á ┴á statemen⌠á oµá thσá objective≤ oµ thσá worδá yo⌡á plaεá t∩ ì
undertake.
b⌐á ┴á statemen⌠ oµ thσ methoΣ yo⌡ plaε t∩ usσ iεá reachinτá you≥ ì
objectives«á ┴ diagraφ o≥ tw∩ ma∙ provσ usefu∞ iε explaininτ you≥ ì
method.
c⌐á ┴ rougΦ descriptioε oµ thσ addition≤ o≥ change≤ yo⌡á plaεá t∩ ìèmakσá t∩á thσá starte≥ program«á Thi≤ ma∙á includσá heading≤á anΣ ì
paramete≥ declaration≤ oµ somσ oµ thσ procedure≤ and/o≥ function≤ ì
yo⌡áá proposσá t∩á use«áá I⌠á woulΣá typicall∙á includσá ßá brieµ ì
descriptioεá oµ thσ rolσ eacΦ importan⌠ procedurσ o≥ functioεá i≤ ì
expected to play.
d⌐á ┴á listinτ oµ thσ parameter≤ yo⌡ expec⌠ t∩á use¼á alonτá witΦ ì
maximuφá anΣ minimuφ value≤ o≥ othe≥ statemen⌠ oµ thσ specia∞á o≥ ì
limiting values each parameter may take on.
e⌐á ┴ statemen⌠ oµ ho≈ yo⌡ plaε t∩ tes⌠ you≥ prograφá change≤á t∩ ì
verif∙á tha⌠á the∙á iε fac⌠ operatσ a≤ planneΣ oncσá writteεá anΣ ì
compiled«á Fo≥á thσ typica∞ homeworδ problem¼á thσ lengtΦ oµá thσ ì
specification≤ ma∙ ruε froφ onσ t∩ abou⌠ threσ pages«á T∩ havσá ß ì
se⌠ oµ specification≤ accepteΣ fo≥ gradinτ purposes¼á bσ prepareΣ ì
t∩ defenΣ thσ desigε choice≤ yo⌡ proposσ t∩ use« EacΦ membe≥ oµ ß ì
homeworδá teaφ mus⌠ bσ familia≥ witΦ al∞ aspect≤ oµ thσ worδ tha⌠ ì
thσá teaφá propose≤ t∩ takσ on«á Iµ yo⌡ spli⌠ u≡ thσ worδá t∩á bσ ì
handleΣ separatel∙ b∙ differen⌠ teaφ members¼á yo⌡ shoulΣá defenΣ ì
you≥á owεá worδ t∩ thσ othe≥ teaφ member≤ beforσ submittinτá you≥ ì
worδá fo≥á forma∞ acceptance«á Otherwisσ therσ i≤ n∩á purposσá iε ì
workinτá a≤ ß team¼á anΣ yo⌡ shoulΣ bσ defendinτ you≥á individua∞ ì
worδ separatel∙ fo≥ grading« Fo≥ forma∞ grading¼ neatnes≤ wil∞ bσ ì
importan⌠á (bu⌠á yo⌡ don'⌠ neeΣ t∩ ge⌠ carrieΣ awa∙ anΣá spenΣá ß ì
largσá par⌠ oµ you≥ timσ jus⌠ iε makinτ you≥ worδ neat)«á Iµá thσ ì
writteε specificatioε i≤ aε unreadablσ mess¼ yo⌡ wil∞ bσ askeΣ t∩ ì
re-d∩á i⌠á beforσá i⌠ caε bσ considereΣá fo≥á acceptance«á T∩á bσ ì
accepteΣá fo≥ gradinτ purposes¼á eacΦ specificatioεá documen⌠á o≥ ì
prograφá submitteΣá mus⌠á contaiε thσ name≤ oµá al∞á person≤á wh∩ ì
workeΣá oεá it¼á anΣ thσ approximatσ datσ oε whicΦ thσá worδá wa≤ ì
carrieΣ out« Iε programs¼ thesσ shoulΣ bσ iε thσ forφ oµ comment≤ ì
a⌠á thσá heaΣ oµ ß listing¼á o≥ iε standardizeΣ initial≤ sucΦá a≤ ì
(*KLB*⌐á embeddeΣá iεá ß prograφá wherσá yo⌡á makσá changes«á Thσ ì
initial≤á caεá bσ useΣ witΦ thσ Editor'≤ F(inΣ commanΣ t∩á locatσ ì
changes made by each of several individuals.
{General Description of the Starter Program}
Thσá packagσ oµ prograφ listing≤ passeΣ ou⌠ t∩ thσ clas≤á oε ì
1▒ February contains four sections, as follows:
a) Program DBTEST - pages 1 .. 4
b) Unit DBUNIT - begins on page 5
c) Unit SCUNIT - begins on page 41
d) Unit STARTER - begins on page 46
Al∞á threσ unit≤ arσ useΣ b∙ thσ DBTES╘ program¼á whicΦá ha≤ ì
onl∙á ßá maiε prograφ bod∙ runninτ froφ linσ 21╡ t∩ linσá 23┤á oε ì
pagσ 4«á Thσ USE╙ statemen⌠ oε linσ 21│ oµ thσ listinτ occur≤á iε ì
thσá prograφá sourcσ filσ immediatel∙ afte≥ thσá PROGRA═á headinτ ì
linσ (linσ │ iε thσ listing)« Al∞ oµ thσ interveninτ line≤ iε thσ ì
DBTES╘ listinτ arσ froφ thσ INTERFAC┼ part≤ oµ thσ unit≤ nameΣ iε ì
thσá USE╙á statement.Iεá UCS─ Pascal¼á ß Uni⌠ ha≤á thσá followinτ ì
form:
UNIT XYZ;
INTERFACE
CONST
...
TYPE
...
VARè...
PROCEDURE & FUNCTION headings
IMPLEMENTATION
CONST
...
TYPE
...
VAR
...
PROCEDURE & FUNCTION declarations
Al∞ oµ thσ declareΣ object≤ arσ simila≥ iε purposσ t∩á thosσ ì
iε aε ordinar∙ Pasca∞ program«á Object≤ declareΣ iε thσ INTERFAC┼ ì
par⌠ arσ intendeΣ t∩ bσ useΣ b∙ program≤ o≥ othe≥ unit≤ whicΦ usσ ì
thσá Uni⌠ XY┌ (o≥ whateve≥ namσ yo⌡ choose)«á Object≤ declareΣ iε ì
thσá IMPLEMENTATIO╬á par⌠ generall∙ ma∙ no⌠ bσ useΣá directl∙á b∙ ì
usinτá prograφá o≥á units«á Howeve≥ thσá procedurσá anΣá functioε ì
heading≤ iε thσ INTERFAC┼ par⌠ servσ a≤ thσ equivalen⌠ oµ FORWAR─ ì
declaration≤áá matcheΣáá b∙á completeΣá procedurσáá o≥áá functioε ì
declaration≤ iε thσ IMPLEMENTATIO╬ part« Procedure≤ anΣ function≤ ì
declareΣá onl∙ iε thσ IMPLEMENTATIO╬ par⌠ ma∙ bσ calleΣá onl∙á b∙ ì
other procedures and functions, not by a using program.
Thσá prograφá listinτ fo≥ thσ DBTES╘ prograφ duplicate≤á thσ ì
INTERFAC┼ part≤ oµ al∞ threσ oµ thσ Unit≤ tha⌠ i⌠ uses«á Line≤á ╡ ì
througΦá 12╢ arσ thσ interfacσ fo≥ thσ DBUNIT¼á line≤ 13░ througΦ ì
14╖á arσ fo≥ thσ SCUNIT¼á anΣ line≤ 15░ througΦ 21▓ arσá fo≥á thσ ì
STARTE╥á unit«á Thσá STARTE╥á uni⌠ encompasse≤ thσá bulδá oµá thσ ì
origina∞ conten⌠ oµ thσ DBTES╘ prograφ itself¼á anΣ i⌠ represent≤ ì
onl∙á aε approximatioε t∩ thσ librar∙ oµ primitivσ routine≤á tha⌠ ì
migh⌠á bσ useΣ fo≥ ß full∙ developeΣ databasσ system«á B∙ placinτ ì
functioninτ part≤ oµ thσ DBTES╘ prograφ iε thσ STARTE╥á unit¼á i⌠ ì
ha≤á beeεá possiblσá t∩á reducσ thσ sizσá oµá ßá typica∞á prograφ ì
compilattioεá fo≥á thσá clas≤ t∩ ß smal∞ anΣá readil∙á manageablσ ì
size.A≤á ma∙ bσ seeε froφ line≤ 21╡ througΦ 23┤ oεá pagσá 4¼á thσ ì
DBTES╘á prograφ i≤ basicall∙ quitσ simple«á First¼á thσ procedurσ ì
STINITIALIZ┼ i≤ called«á Detail≤ oε STINITIALIZ┼ ma∙ bσ founΣá iε ì
thσá listinτ fo≥ thσ STARTE╥ uni⌠ oε pagσ 48¼á line≤ 27╢á througΦ ì
305«á Fo≥ mos⌠ purposes¼á thσ procedurσ operate≤ jus⌠ a≤ i⌠ woulΣ ì
havσá haΣ i⌠ beeε haΣ i⌠ beeε declareΣ iε ful∞ withiε thσá DBTES╘ ì
program«á Continuinτ iε DBTES╘ (pagσ 4)¼ thσ prograφ loop≤ iε thσ ì
REPEA╘á statemen⌠ unti∞ DON┼ i≤ set«á DON┼ i≤ ß Booleaεá variablσ ì
declareΣ iε thσ INTERFAC┼ par⌠ oµ STARTER¼ a≤ ma∙ bσ seeε a⌠ linσ ì
19▓ oε pagσ 4¼á o≥ linσ 19▓ oε pagσ 46«á GOTOX┘ (linσ 21╕ oε pagσ ì
4⌐ i≤ ß built-iε procedurσ provideΣ b∙ thσ UCS─ Pasca∞ system« I⌠ ì
cause≤ thσ curso≥ t∩ jum≡ t∩ thσ (column¼ row⌐ locatioε indicateΣ ì
b∙á thσá paramete≥á expression≤á (typσá Integer)«á Thσá function≤ ì
GETCOMMAN─á anΣ CHANGEREC¼á anΣ thσ procedure≤ SAVEREC¼á FINDREC¼ ì
GETREC¼á anΣá NEWRE├ arσ al∞ declareΣ iε thσá STARTE╥á unit«á Thσ ì
procedurσá DBSHOWER╥ i≤ declareΣ iε thσ DBUNIT«á Iε general¼á yo⌡ ì
caεá identif∙á routine≤á declareΣ iε thσá databasσá suppor⌠á uni⌠ ì
DBUNI╘ b∙ thσ prefi° "DB"¼á anΣ thosσ iε thσ screeε contro∞á uni⌠ ì
SCUNI╘ b∙ thσ prefix "SC".
Fo≥á lacδ oµ time¼á i⌠ wil∞ no⌠ bσ possiblσ t∩ distributσá ß ì
ful∞á se⌠ oµ writteε description≤ oµ thσ routine≤ iε thσ program≤ ì
distributed«á Whilσá i⌠á wa≤ planneΣ t∩ providσ yo⌡ witΦá ßá morσ ì
comprehensivσá writteε description¼á thσ leve∞á oµá documentatioε ì
provideΣá herσ i≤ probabl∙ typica∞ oµ documentatioε yo⌡ ma∙á havσ ì
t∩á copσ witΦ iε rea∞ worlΣ programminτ assignments«á Iε general¼ ì
mos⌠á importan⌠á routine≤á havσ brieµ comment≤ oεá wha⌠á the∙á d∩ ìèimmediatel∙ followinτ theΘ headinτ lines«á Virtuall∙ al∞ routine≤ ì
havσ beeε giveε name≤ whicΦ directl∙ sugges⌠ wha⌠ the∙ do«á Afte≥ ì
ß brieµ descriptioε oµ thσ datß structurσ useΣ b∙ thσ system¼á wσ ì
wil∞ walδ yo⌡ througΦ onσ oµ thσ STARTE╥ procedure≤ t∩ assis⌠á iε ì
readinτ thσ programs.
{The Data Structure and DataBase Support Module DBUNIT}
Thσá genera∞ concep⌠ oµ softwarσ tool≤ i≤ describeΣá briefl∙ ì
iεá thσ Beginner≤ Manua∞ fo≥ thσ UCS─ Pasca∞ System¼á chapte≥á 9« ì
DBUNI╘á ha≤ beeε designeΣ witΦ thσ inten⌠ t∩ providσ ß librar∙ oµ ì
primitivσá softwarσá tool≤ t∩ simplif∙ writinτá databasσá handle≥ ì
program≤á fo≥á ßá variet∙ oµá purposes«á Thσá datßá structurσá i≤ ì
intendeΣá t∩á overcomσ tw∩ bothersomσ limitation≤ oµá thσá Pasca∞ ì
language¼áá anΣá typica∞á smal∞á operatinτá systems¼áá fo≥á thesσ ì
purposes:
a⌐á Thσ Pasca∞ requiremen⌠ t∩ usσ record≤ oµ fixeΣ sizσ lead≤á t∩ ì
inefficien⌠á usσá oµ storagσ spacσ iµ al∞ record≤ arσá storeΣá iε ì
conventiona∞ Pasca∞ files« T∩ accoun⌠ fo≥ name≤ o≥ othe≥ variablσ ì
sizσá object≤á oµá maximuφ length¼á mos⌠ record≤á contaiεá wasteΣ ì
space«á Oεá average¼á ß typica∞ filσ migh⌠ contaiε froφ 5░ t∩á 7╡ ì
percen⌠á wasteΣá space«á Thσ datß structurσá implementeΣá iεá thσ ì
DBUNI╘ overcome≤ thi≤ b∙ providinτ randoφ acces≤ t∩ variablσ sizσ ì
objects. The cost is a small amount of access overhead.
b⌐á ┴á typica∞á databasσ contain≤ severa∞á relateΣá bu⌠á distinc⌠ ì
files¼á eacΦ witΦ it≤ owε distinc⌠ recorΣ format(s)«á Maintenancσ ì
oµ thesσ files¼ anΣ thσ spacσ eacΦ filσ occupies¼ caε becomσ ver∙ ì
awkward«á Thσ DBUNI╘ baseΣ systeφ overcome≤ thi≤ b∙ interminglinτ ì
al∞á oµá thσ logica∞ datß sequences¼á tha⌠ otherwisσ woulΣ bσá iε ì
separatσá files¼á iεá onσ UCS─ Pasca∞ file«á Thσá datßá structurσ ì
provide≤á packinτ oµ variablσ sizσ datß object≤ b∙á usinτá linkeΣ ì
lists«á I⌠á provide≤á reasonabl∙á rapiΣ randoφá acces≤á t∩á thosσ ì
object≤á b∙á breakinτá thσ databasσ filσ int∩á "pages"«á Iεá thi≤ ì
system¼á ß pagσ i≤ treateΣ a≤ ß mediuφ sizσ physica∞ recorΣ largσ ì
enougΦ t∩ holΣ man∙ logica∞ record≤ oµ variablσ size«á ┴ CONSTan⌠ ì
iεá thσá DBUNI╘á establishe≤ thσ pagσ sizσá a≤á 409╢á bytes¼á thσ ì
equivalent⌠ oµ ╕ block≤ oµ 51▓ byte≤ each«á Thi≤ coulΣ bσ changeΣ ì
iµá onσá wisheΣ b∙ recompilinτ thσ unit«á Thσ DBUNI╘á allow≤á fo≥ ì
manipulatinτá thσá conten⌠ oµ ß pagσ b∙ loadinτ i⌠á int∩á an∙á oµ ì
severa∞á "workareasóá whicΦ caε bσ "openedó fo≥ usσ b∙á primitivσ ì
routine≤á provideΣ witΦ thσ unit«á Datß caε bσ extracteΣá iεá onσ ì
workareßá anΣ moveΣ t∩ anothe≥ workareß o≥ t∩ thσ usinτá program« ì
Datßá caεá bσ editeΣ (b∙ procedurσ anΣ functioε calls⌐á withiεá ß ì
workarea¼á anΣá late≥á inserteΣ int∩ anothe≥ workarea«á Wheεá thσ ì
content≤á oµ ß full-pagσ workareß i≤ read∙ t∩ bσ saveΣá agaiεá oε ì
thσá disk¼á tha⌠ caε bσ donσ usinτ thσ DBPUTPAG┼á function«á Wheε ì
opened¼á ßá workareß ma∙ bσ a≤ largσ a≤ ß ful∞ page¼á o≥á smalle≥ ì
dependinτ upoε thσ programmer≤ requirement≤ fo≥ temporar∙ workinτ ì
storagσá iεá memory«á Withiε ß page¼á thσ datß structurσá caεá bσ ì
describeΣ witΦ thσ hel≡ oµ figure≤ 1¼á ▓ anΣ 3«á Figurσ ▒ show≤ ß ì
pagσá containinτá severa∞ "groups"«á Iε thi≤ system¼á ß grou≡á i≤ ì
equivalen⌠á t∩ ß "repeatinτ group"¼á a≤ ofteε referreΣ t∩ iεá thσ ì
databasσá industry«á I⌠ i≤ ß structurσ whicΦ contain≤ ßá variablσ ì
numbe≥á oµá records«á Record≤ arσ simila≥ iεá concep⌠á t∩á Pasca∞ ìèrecords¼ excep⌠ tha⌠ thσ field≤ iε ß recorΣ iε thi≤ systeφ ma∙ bσ ì
oµ variablσ size«á Thσ relationship≤ amonτ groups¼á records¼á anΣ ì
field≤ arσ showε iε Figurσ 2« ┴ grou≡ start≤ witΦ ß linδ pointinτ ì
t∩á thσá beginninτ oµ thσ followinτ group¼á o≥ t∩ thσ enΣ oµá thσ ì
lis⌠ (indicateΣ b∙ ß linδ valuσ oµ 0)«á Withiε ß group¼ therσ arσ ì
severa∞ records¼ eacΦ oµ whicΦ start≤ witΦ ß linδ pointinτ t∩ thσ ì
nex⌠á record«á Withiε ß record¼á therσ arσá severa∞á fields«á Al∞ ì
variablσá field≤ star⌠ witΦ ß linδ pointinτ t∩ thσ nex⌠ field«á ┴ ì
recorΣ ma∙ contaiε onσ o≥ morσ unlinkeΣ field≤ oµ fixeΣ size« Al∞ ì
fixeΣ sizσ field≤ arσ lumpeΣ int∩ ß singlσ linkeΣ pseudo-fielΣ a⌠ ì
thσá beginninτá oµá thσ record«á Thσ fixeΣá field≤á arσá accesseΣ ì
relativσ t∩ thσ positioε oµ thσ linδ whicΦ make≤ thσ pseudo-fielΣ ì
appea≥ simila≥ t∩ othe≥ field≤ withiε thσ linkeΣ lis⌠á structure« ì
┴ fielΣ ma∙ bσ defineΣ t∩ contaiε ß group«á Thu≤ thσ structurσ i≤ ì
recursive¼ anΣ ma∙ contaiε man∙ level≤ oµ nesteΣ groups¼ records¼ ì
anΣ field≤ in applications where that makes sense. Thσ forma⌠ oµ al∞ groups¼á records¼á anΣ field≤ i≤ unde≥ thσ ì
contro∞á oµá "descriptoró record≤ storeΣ iε threσ group≤á a⌠á thσ ì
beginninτ oµ thσ databasσ file«á Iε thσ filσ TESTD┬ tha⌠ yo⌡ wil∞ ì
bσ using¼á al∞ threσ list≤ oµ descriptor≤ arσ containeΣ iε Pagσ ú ì
0« Group≤ arσ iε predefineΣ descripto≥ grou≡ #1¼ record≤ iε grou≡ ì
#2¼á anΣ field≤ iε grou≡ #3«á ┴ grou≡ descripto≥ refer≤ t∩ onσ o≥ ì
morσá numbereΣ descriptor≤ fo≥ thσ record≤ i⌠ contains«á ┴ recorΣ ì
descripto≥ contain≤ ß simplσ (unlinked⌐ lis⌠ oµá field-descripto≥ ì
numbers«á ┴ fielΣ descripto≥ referrinτ t∩ ß nesteΣ grou≡ contain≤ ì
thσ descripto≥ numbe≥ oµ tha⌠ group¼á rathe≥ thaε ß specificatioε ì
oµ thσ typσ of information contained in the field.
Figurσá │á show≤ ß closσ approximatioε t∩ thσá relationship≤ ì
amonτ thσ descriptor≤ iε thσ TESTD┬ filσ whicΦ yo⌡ wil∞ bσá usinτ ì
fo≥á thi≤ course«á A≤ ma∙ bσ seen¼á Grou≡ #░ (thσ "People_Group"⌐ ì
refer≤á t∩á jus⌠á onσá recorΣá descripto≥á fo≥á RecorΣá #░áá (thσ ì
"Person_Rec")«á RecorΣ #0¼á iε turn¼á refer≤ t∩ fielΣ descriptor≤ ì
numbereΣ ░ througΦ 10«á Field≤ 0¼ 1¼ anΣ ▓ arσ fixeΣ sizσ intege≥ ì
fields¼á anΣ eacΦ i≤ ▓ byte≤ wide«á Field≤ ┤ througΦ ╣ arσ strinτ ì
typσáá fields¼áá witΦá maximuφá width≤á ranginτá froφá 1╡á t∩á 4░ ì
characters«á FielΣá #1░á refer≤ t∩ Grou≡ #▓á (thσá "TransGroup")¼ ì
whicΦ iε turε contain≤ record≤ witΦ threσ fixeΣ sizσ field≤ each« ì
Thσá notatioε "SWó refer≤ t∩ ß bytσ storeΣ witΦá eacΦá descripto≥ ì
containinτá contro∞á bits«á Mos⌠á oµ thσ contro∞á bit≤á arσá lef⌠ ì
undefineΣ fo≥ possiblσ usσ iε ß user'≤ program«á Fo≥ fields¼á bi⌠ ì
#▒á (correspondinτ t∩ thσ valuσ 2⌐ indicate≤ ß fixeΣ widtΦ field« ì
Thσ notation≤ "Row"¼á "Lcol"¼á anΣ "Dcoló arσ fo≥ controllinτ thσ ì
screeε locatioε anΣ forma⌠ oµ datß display«á BotΦ thσ "labeló anΣ ì
thσá datß conten⌠ oµ ß fielΣ arσ t∩ bσ displayeΣ iε thσ samσá ro≈ ì
oεá thσá screeεá (numberinτ ░ a⌠ thσ to≡ t∩ 2│á a⌠á thσá bottom)« ì
"Lcoló indicate≤ thσ columε numbe≥ iε whicΦ thσ field'≤ labe∞á i≤ ì
t∩ bσ started« "Dcoló indicate≤ thσ columε iε whicΦ thσ left-mos⌠ ì
datßá characte≥ shoulΣ appear«á Thσ descriptor≤ arσ storeΣ iε thσ ì
TESTD┬á filσ a≤ linkeΣ list≤ simila≥ iε concep⌠ t∩ thosσá iεá thσ ì
list≤ the∙ describe«á Thσ descriptor≤ arσ storeΣ iε thσ file¼ anΣ ì
edited¼á usinτá thσá samσ primitivσ operation≤ tha⌠ appl∙ t∩á thσ ì
datßá the∙á describe«á However¼á acces≤á t∩á thσá descriptor≤á i≤ ì
accomplisheΣ witΦ thσ globa∞ Booleaε DBTYPECHEC╦ (linσ 4┤ oε pagσ ì
▒á oµ thσ listing⌐ se⌠ t∩ FALSE«á Thi≤ suppresse≤á reference≤á t∩ ì
descriptor≤á wheεá movinτá arounΣ iεá thσá groups¼á records¼á anΣ ì
fields«á InsteaΣá thσ descriptor≤ arσ considereΣ b∙ DBUNI╘ itselµ ìèa≤ madσ u≡ oµ simplσ linkeΣ strings« Thesσ arσ passeΣ t∩ thσ datß ì
structurσá edito≥á program«á Thσ datßá structurσá edito≥á prograφ ì
currentl∙ availablσ i≤ quitσ primitive¼ anΣ supplieΣ t∩ thσ clas≤ ì
a≤á par⌠á oµá thσá prograφ DBUILDER«á DBUILDE╥á i≤á basicall∙á aε ì
experimenta∞ laborator∙ designeΣ t∩ allo≈ step-by-ste≡á debugginτ ì
oµ thσ DBUNIT« Yo⌡ arσ welcomσ t∩ usσ i⌠ (a⌠ you≥ owε peril)¼ bu⌠ ì
n∩á documentatioε wil∞ bσ provided«á Eventually¼á ß morσ friendl∙ ì
datßá structurσ edito≥ wil∞ bσ provided«á (An∙ clas≤á grou≡á tha⌠ ì
feel≤á reall∙á ambitiou≤ migh⌠ conside≥ writinτ ß datßá structurσ ì
edito≥á fo≥á thσá seconΣá anΣ thirΣá homeworδá project≤á iεá thi≤ ì
course.⌐á WitΦ aε understandinτ oµ thσ relationshi≡á betweeεá thσ ì
datßá structurσ anΣ thσ primitivσ operation≤ oµ thσá DBUNIT¼á yo⌡ ì
shoulΣá bσá ablσ t∩ reaΣ ß listinτ oµ thσ DBUILDE╥á prograφá witΦ ì
relativel∙ littlσ problem¼á anΣ theε shoulΣ bσ ablσ t∩ usσ i⌠ fo≥ ì
step-by-ste≡ viewinτ oµ thσ datß containeΣ iε thσ file« A≤ ma∙ bσ ì
seeεá froφ pagσ ▓ oµ thσ listing¼á thσ DBUNI╘ routine≤ arσ brokeε ì
int∩ severa∞ functiona∞ groupings«á Thσ traversa∞ primitive≤á arσ ì
useΣá fo≥á movinτ arounΣ iε thσ datß structurσ withiε ß pagσá (a≤ ì
containeΣá iεá ß workarea)«á Thσ transfe≥á primitive≤á movσá datß ì
betweeεá workareas¼á anΣ betweeε ß workareß anΣ ß usinτá program« ì
Thσá workareßá primitive≤á arσá useΣ t∩á establisΦá workarea≤á oµ ì
appropriatσá sizes«á Thσ filσ primitive≤ maintaiε table≤ fo≥á thσ ì
onσá o≥ morσ dataabasσ file≤ needeΣ b∙ ß use≥ program«á Yo⌡á wil∞ ì
probabl∙á restric⌠á you≥ attentioε t∩ jus⌠ onσ databasσá filσá iε ì
thi≤ course«á Noticσ als∩ thσ debugginτ primitive≤ a⌠ thσ to≡á oµ ì
pagσá │á oµ thσ listing«á Wheε yo⌡ loaΣ ß pagσ int∩á ßá workareß ì
usinτá DBGETPAGE¼á thσ workarea'≤ locatioε pointe≥ i≤ initializeΣ ì
a⌠á thσ heaΣ oµ thσ firs⌠ grou≡ (grou≡ #0)«á T∩ ge⌠ t∩á thσá nex⌠ ì
grou≡á iεá thσ lis⌠ usσ DBNEXT«á T∩ ge⌠ t∩ thσ firs⌠ recorΣ iεá ß ì
group¼á usσ DBDESCEND«á Iε othe≥ words¼á yo⌡ descenΣ onσ leve∞ iε ì
thσá treσá structureΣ lis⌠ t∩ movσ froφ thσ GROUP╘ leve∞á t∩á thσ ì
RECORD╘ leve∞ (seσ linσ 2░ oε pagσ ▒ oµ thσ listing)«á T∩ ge⌠á t∩ ì
recorΣ ╬ withiε tha⌠ group¼á yo⌡ caε usσ DBSEEK¼ o≥ cal∞ DBNEX╘ ╬ ì
times« T∩ ge⌠ t∩ thσ enΣ oµ thσ lis⌠ iε orde≥ t∩ linδ ye⌠ anothe≥ ì
recorΣá there¼á usσ DBTAIL«á T∩ acces≤ individua∞ field≤ withiε ß ì
record¼á usσ DBDESCEN─ again«á T∩ returε froφ thσ FIELD╘ leve∞ t∩ ì
thσ heaΣ oµ thσ enclosinτ record¼á usσ DBASCEND« DBHEA─ take≤ yo⌡ ì
t∩á thσá locatioε oµ thσ firs⌠ iteφ iε thσ lis⌠á a⌠á thσá curren⌠ ì
level«á DBHOM┼á return≤á yo⌡ t∩ thσ heaΣ oµ thσá outermos⌠á grou≡ ì
leve∞ iε thσ page« DBFINDRE├ i≤ useΣ t∩ scaε througΦ record≤ iε ß ì
singlσá group¼á searchinτá fo≥ ß matcΦ witΦ ß strinτ iεá thσá KE┘ ì
parameter.
Oncσ yo⌡ havσ locateΣ ß desireΣ record¼ yo⌡ ma∙ wisΦ t∩ movσ ì
informatioεá froφá thσá field≤á oµ tha⌠ recorΣá t∩á you≥á callinτ ì
program¼á o≥á yo⌡ ma∙ wisΦ t∩ replacσ informatioε iεá thσá recorΣ ì
witΦá ne≈á information«á Thi≤ i≤ donσ b∙ passinτ thσá informatioε ì
througΦá thσá DBUNIT'≤ "mailboxó variablσ (declareΣá startinτá iε ì
linσ 4╕ oε pagσ ▒ oµ thσ listing)«á Thσ DBMAI╠ recorΣ passe≤á onσ ì
iteφ oµ an∙ typσ oµ informatioε supporteΣ b∙ thσ systeφ usinτ thσ ì
transfe≥á primitive≤ DBGE╘ anΣ DBPU╘ whicΦ arσ simila≥ iε concep⌠ ì
t∩ Pascal'≤ GE╘ anΣ PU╘ useΣ witΦ files«á You≥ prograφ accesse≤ ß ì
valuσ froφ thσ datß structurσ b∙ usinτ DBGET¼á oncσ thσá locatioε ì
pointe≥ ha≤ beeε moveΣ t∩ thσ desireΣ item« DBGE╘ load≤ ß cop∙ oµ ì
thσ iteφ int∩ DBMAIL« Yo⌡ caε theε acces≤ thσ valuσ withiε DBMAI╠ ì
(jus⌠á a≤á yo⌡ caε usσ FID▐ fo≥ ß file)¼á o≥ yo⌡ caεá assigεá thσ ìèvaluσá iε DBMAI╠ t∩ ß variablσ iε you≥ program«á DBPU╘ take≤á thσ ì
valuσá iεá thσ DBMAI╠ variablσ anΣ use≤ i⌠ t∩ replacσá thσá valuσ ì
currentl∙á storeΣá iε thσ datß structurσ a⌠ thσ locatioεá oµá thσ ì
workarea'≤á locatioε pointer«á Thσ DBMAILTYP┼ taτ fielΣ oµ DBMAI╠ ì
mus⌠ bσ useΣ t∩ identif∙ wha⌠ typσ oµ informatioε i≤ beinτ passeΣ ì
viß thσ mailbo° (otherwisσ yo⌡ wil∞ ge⌠ bizarrσ anΣ unpredictablσ ì
results!)«á A⌠ present¼ onl∙ thσ STRING╞ anΣ INTEGER╞ option≤ arσ ì
implemented«á (Iµá yo⌡á arσ eveε morσ ambitious¼á yo⌡á migh⌠á tr∙ ì
addinτá onσ oµ thσ othe≥ type≤ fo≥ thσ seconΣ anΣ thirΣá homeworδ ì
tasks.) Al∞á thσá othe≥ transfe≥ primitive≤ operatσ withiε thσá datß ì
structure¼á anΣ d∩ no⌠ refe≥ t∩ DBMAIL«á Comment≤ iε thσ heading≤ ì
oµ thesσ primitives describe what they do in the DBUNIT listing.
{Walk-thru of a STARTER procedure}
Iµá yo⌡ executσ thσ prograφ DBPRO╟ (showε iε thσ listinτá a≤ ì
DBTEST)¼á anΣá answe≥ thσ promp⌠ b∙ askinτ fo≥ thσ databasσá filσ ì
TESTD┬ (transfe≥ i⌠ witΦ thσ File≥ t∩ you≥ #4║ o≥ #5║ disk)¼ theε ì
thσá operatioεá oµ thσ severa∞ procedure≤ caεá bσá summarizeΣá a≤ ì
follows:
a⌐á F(indreπ wil∞ asδ fo≥ aε approximatσ inde° "key"«á Afte≥á yo⌡ ì
pres≤á <return>¼á ßá portioε oµ thσ inde° wil∞ bσ displayeΣá witΦ ì
selectioε letters«á Picδ ß letter¼á anΣ thσ correspondinτá recorΣ ì
wil∞ be displayed.
b⌐á C(hangereπá allow≤á alterinτ thσ content≤á oµá thσá displayeΣ ì
record«á Selec⌠á thσá fielΣá t∩ alte≥ b∙á pressinτá it≤á selecto≥ ì
letter¼á o≥á b∙ usinτ <return╛ t∩ ge⌠ t∩ thσ nex⌠ field«á Thσ olΣ ì
valuσ oµ thσ fielΣ caε bσ editeΣ o≥ ß ne≈ valuσ substituted«á Seσ ì
pagσá 4│ oµ thσ listinτ fo≥ detail≤ oε thσá SCREADSTR╟á procedurσ ì
useΣá t∩á handlσá thi≤á editing«á Oε thσá Apple¼á usσá thσá ASCI╔ ì
characte≥ "CANó (Control-X⌐ t∩ ge⌠ thσ effec⌠ oµ DE╠ describeΣ iε ì
thσá procedure«á Savσ thσ ne≈ valuσ oµ thσ fielΣ usinτá <return>« ì
<escape╛á return≤á yo⌡á t∩á thσá C(hangereπá contro∞á leve∞áá anΣ ì
redisplay≤á thσ origina∞ valuσ oµ thσ field«á Froφ thσ C(hangereπ ì
contro∞ level¼ <ETX╛ save≤ thσ ne≈ recorΣ value¼ <ESC╛ return≤ t∩ ì
thσ prograφ with no change in the record.
c⌐ N(ewreπ i≤ useΣ t∩ creatσ ß ne≈ record¼á anΣ storσ i⌠ anΣá it≤ ì
index entries in the file.
d⌐á G(etreπá i≤ ß debugginτ procedurσ useΣ t∩ allo≈ yo⌡ t∩á refe≥ ì
explicitl∙ t∩ ß page¼á group¼á anΣ recorΣ numbe≥á location«á Datß ì
record≤á iεá TESTD┬ arσ oε page≤ ▓ anΣ up«á Pagσ ▒á contain≤á thσ ì
currentl∙ implementeΣ singlσ leve∞ index«á Pagσ ░ contain≤ mainl∙ ì
the descriptor groups.
e) Q(uit as it implies gets you out of the program.
f⌐á T(racσá allow≤á manipulatinτá thσ control≤á useΣá t∩á trigge≥ ì
detaileΣá "dumpsóá oµ thσ datß structurσ b∙ thσ DBUNI╘á procedurσ ì
TRACEWA«á Thσ T(racσ displa∙ wil∞ promp⌠ fo≥ tracσ "sites"¼ whicΦ ì
arσá number≤á associateΣá witΦ specifiπá traversa∞á anΣá transfe≥ ì
primitives«á Fo≥ example¼á iµ yo⌡ se⌠ tracinτ fo≥ sitσ #9¼ ß dum≡ ì
wil∞á bσá triggereΣ thσ nex⌠ timσ thσ DBSEE╦ routinσá i≤á entereΣ ì
(Seσá linσ 90╢ oε pagσ 2░ oµ thσ listing.⌐ ┴ tablσ oµá al∞á tracσ ì
site≤á wil∞ bσ provideΣ t∩ thσ clas≤ iε ß supplementar∙á handout« ì
No≈á refe≥ t∩ thσ STARTE╥ procedurσ SAVEINDEXITE═ whicΦ start≤ oε ì
linσ 42░ oµ pagσ 5░ iε thσ listing«á Thσ arra∙ SELEC╘ i≤á assumeΣ ì
t∩á havσá beeε previousl∙ loadeΣ witΦ itemnumber≤ anΣá descripto≥ ìènumber≤ b∙ thσ SHOWRE├ procedure«á ZEROWORKAREA(WA2⌐ i≤ ßá DBUNI╘ ì
procedurσá useΣ herσ t∩ initializσ workareß #▓ (seσ CONS╘ iε linσ ì
15┤ pagσ 46)« Thσ followinτ lis⌠ oµ call≤ t∩ DBEMPTYITEM¼ DBHOME¼ ì
DBDESCEN─á al∞ se⌠ ß dumm∙ intege≥ variable«á Mos⌠ oµ thσá DBUNI╘ ì
routine≤ arσ function≤ whicΦ ma∙ returε ß non-zer∩ erro≥ valuσ iε ì
ß manne≥ simila≥ t∩ aε erro≥ IORESULT«á Iε thσ line≤ showεá here¼ ì
wσ havσ assumeΣ tha⌠ thesσ routine≤ wil∞ ruε correctly¼á anΣ makσ ì
no provision for error handling.
A≤á yo⌡á wil∞á find¼á i⌠ i≤ probabl∙ preferablσ fo≥á yo⌡á t∩ ì
contro∞ al∞ oµ you≥ call≤ t∩ thesσ routine≤ usinτá DBSHOWERR¼á a≤ ì
illustrateΣá oε linσ 46┤ oµ pagσ 51«á Iε tha⌠ case¼á wσ cop∙á thσ ì
iteφá currentl∙ pointeΣ a⌠ iε WA▓ (workareß #2⌐ int∩ thσá curren⌠ ì
positioεá pointeΣ a⌠ iε WA0«á Iµ DBCOP┘ fail≤ (return≤ ß noε zer∩ ì
value⌐áá theεáá thσá messagσá giveεá b∙á thσáá strinτáá paramete≥ ì
'SAVEINDEXITE═ - cop∙ WA▓ t∩ WA0º wil∞ bσ displayed¼ anΣ yo⌡ wil∞ ì
bσá askeΣá ho≈á t∩á proceed«á Wσ eliminatσá thσá spacσá anΣá timσ ì
consuminτá usσá oµ DBSHOWER╥ onl∙ afte≥ enougΦ testinτá ha≤á beeε ì
donσá t∩ sho≈ tha⌠ error≤ arσ ver∙ unlikely«á Yo⌡á wil∞á probabl∙ ì
finΣá tha⌠ ou≥ confidencσ iε usinτ DUMMY:=..«á ha≤ beeε misplaceΣ ì
iε somσ oµ its uses in the STARTER unit.
Iεá linσ 46░ oε pagσ 51¼á wσ se⌠ thσ loca∞ variablσ RSL╘á t∩ ì
thσ valuσ returneΣ b∙ DBDESCEND«á Thi≤ allow≤ thσ prograφ t∩ takσ ì
evasivσá actioε iµ thσ DBDESCEN─ routinσ fail≤ fo≥ ßá predictablσ ì
reason«á Iεá thi≤ casσ DBDESCEN─ migh⌠ fai∞ iµ WA░ i≤á completel∙ ì
empty.
{Homework Problem Topics}
Duσ t∩ shortagσ oµ time¼ thi≤ sectioε wil∞ generall∙ providσ ì
onl∙á ß brieµ recountinτ oµ thσ area≤ iε whicΦ team≤ oµá student≤ ì
ma∙ proposσ homeworδ topics« Aε additiona∞ handou⌠ providinτ morσ ì
detail≤á wil∞ bσ availablσ iε ß fe≈ days«á ┴ poin⌠ oµ cautioεá i≤ ì
tha⌠á therσá arσ probabl∙ severa∞ bug≤ iε thσá prograφá material≤ ì
provideΣá t∩ yo⌡ - ß toucΦ oµ wha⌠ yo⌡ wil∞ als∩ finΣ iεá workinτ ì
iε thσ rea∞ world after leaving UCSD.
Fo≥ thσ firs⌠ homeworδ project¼á al∞ bu⌠ thσ morσá ambitiou≤ ì
groups may wish to attack problem 6.1b, c, or d.
{ISAM Index}
Thσá inde° facilit∙ iε thσ starte≥ prograφ i≤ incompletσá iε ì
many ways. Any of the following would be suitable project tasks:
a⌐ Thσ starte≥ prograφ provide≤ onl∙ ß coarsσ index« ExtenΣ i⌠ b∙ ì
addinτá finσá inde° handling«á Sincσ thσ inde° filσ handlinτá ma∙ ì
makσ thi≤ time-consuming¼á pu⌠ "Updatinτ ..«á ó oε thσ screeεá t∩ ì
sho≈ that work is in progress.
b⌐á Thσ STARTE╥ unit'≤ SAVEINDEXITE═ procedurσ make≤ n∩ provisioε ì
t∩ replacσ aε inde° entr∙ witΦ aε editeΣ entry«á Iµ thσ ne≈ entr∙ ì
differ≤ iε an∙ wa∙ froφ thσ old¼á theε thσ ne≈ entr∙ i≤ addeΣá t∩ ì
thσ index¼á bu⌠ thσ olΣ remains« Repai≥ thi≤ probleφ b∙ arranginτ ì
t∩á replacσá thσ olΣ entr∙ witΦ thσ ne≈á wheεá appropriate«á Thi≤ ì
shoulΣ no⌠ prevent adding new index items when NEWREC is called.
c⌐á Thσá STARTE╥á unit'≤ inde° handlinτ make≤á n∩á provisioεá fo≥ ì
storinτá multiplσá reference≤ t∩ ß singlσ inde°á ke∙á value«á Fo≥ ì
example¼á therσá arσ tw∩ reference≤ iε thσ TESTD┬ filσ fo≥á Texa≤ ìèInstruments¼á bu⌠á onl∙á onσ caε bσ reacheΣ viß tha⌠ ke∙á iεá thσ ì
index« This should be fixed.
d⌐ Relativσ t∩ thσ F(inΣ command'≤ displa∙ oµ Ke∙ values¼ providσ ì
ßá capabilit∙á t∩ usσ thσ U╨ anΣ DOW╬ arro≈ key≤ t∩ ge⌠ thσá nex⌠ ì
datßá record¼á o≥á thσ previou≤ one¼á iε thσá inde°á (alphabetic⌐ ì
sequence.
e⌐á BuilΣá ß completσ inde° froφ ß pre-existinτá DFI─á file¼á fo≥ ì
example to provide a new combination of fields that are indexed.
f⌐á Re-builΣá aεá existinτ ISA═ inde° iεá orde≥á t∩á balancσá thσ ì
occupancy of the several pages.
{Transaction File}
Thσ starte≥ prograφ currentl∙ contain≤ onl∙ primitivσ hook≤ ì
to implement the transaction file.
a) Implement the transaction file initializer/maintainer.
b) Collect transaction data from the keyboard and display it.
c⌐ Displa∙ recen⌠ transactioε record≤ associateΣ witΦ thσ curren⌠ ì
datßá record«áá Implemen⌠á ßá "nextóá capabilit∙á t∩á scrol∞á thσ ì
transactioε records so that earlier ones may be seen.
{Batch Search}
Implemen⌠á ßá genera∞á purposσ mean≤ oµ goinτá througΦá thσ ì
entirσá datßá record≤á file¼á allowinτá specifieΣá processinτá oε ì
selecteΣ records.
{Summary Report Generator}
BaseΣ oε ß batcΦ strategy¼á summarizσ numeriπ datß field≤ iε ì
thσ datß records¼ anΣ providσ ß formatteΣ outpu⌠ repor⌠ whicΦ ma∙ ì
bσ either displayed or printed.
{Reformat a Data Records File}
Providσá ß genera∞ capabilit∙ t∩ creatσ ß ne≈ databasσá filσ ì
witΦá ß newl∙ defineΣ layou⌠ oµ field≤ iε thσ records¼á baseΣá oε ì
inpu⌠ from an old pre-existing file with a different layout.
{Sort/Merge Utility}
Writσá ß utilit∙ prograφ t∩ Sor⌠ and/o≥ Mergσ record≤á iεá ß ì
database«á Thi≤á include≤ ß substantia∞ amoun⌠ oµ disδá handling¼ ì
anΣ i≤ ß fairly major project.
{Garbage Collection}
Afte≥ substantia∞ amount≤ oµ use¼ thσ Datß Record≤ filσ ma∙ ì
becomσ "checkerboardedó witΦ unuseΣ recorΣ locations« RebuilΣ thσ ì
filσá t∩ eliminatσ unuseΣ recorΣ link≤ embeddeΣ withiε thσá file« ì
Thi≤ ma∙ requirσ ---------"Thi≤ i≤ wherσ i⌠ endeΣ oε m∙ disδ s∩ ╔ ì
supposσá ßá smal∞ par⌠ i≤ missing¼á howeve≥ i⌠ won'⌠ effec⌠á you≥ ì
efforts. GOOD LUCK"
PASCAL/Z USERS GROUP
Charlie Fosterè