home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / datamage.zip / DOCS.ZIP / MAIN.DOC < prev    next >
Text File  |  1991-09-26  |  43KB  |  795 lines

  1.                            WARRANTY AND DISCLAIMER
  2.  
  3. If  this program is found to operate improperly by a registered  user  H.C.W.P.
  4. software  will provide a corrected version of the program to that user for  the
  5. price  of  a  suitable, postpaid diskette mailer and a  PC  formatted  diskette
  6. delivered to us, or $8.
  7.  
  8. NO OTHER WARRANTY IS MADE, expressed or implied.  This package represents  over
  9. six  years  of  work  by a single programmer.   I have done  my  best  to  make
  10. something  I'd be proud to show.  If you find anything I've missed  I'd  really
  11. appreciate knowing about it!
  12.  
  13.  
  14.  
  15.  
  16.                      THE DATAMAGE  data management system
  17.  
  18.  
  19.  
  20.  
  21. DATAMAGE is, at the very least, completely different.  It's not a dBase  clone,
  22. Lotus  copy, RIM database subset, etc.  The DATAMAGE data management system  is
  23. designed  to  be  fully and easily assimilated by what we  call  "your  average
  24. clerical employee."
  25.  
  26. The faculty  provided by the system is computerized data storage and retrieval.
  27. Unlike  the  worthy (and sometimes lofty) competition it is  not  necessary  to
  28. "write  an application" of/with DATAMAGE in order to begin using it.  The  only
  29. thing that needs to be set up is the datafile.
  30.  
  31. DATAMAGE  first  time use is documented by the file  MAGETUTR.   The  automatic
  32. installation batch files display this file, the user prints it, then the system
  33. is  started  by  the batch file.  The MAGETUTR  file  introduces  the  DATAMAGE
  34. structure and some of it's capabilities.  If you have not used this file it's a
  35. good place to begin.
  36.  
  37. To use the MAGETUTR tutorial after the initial installation of DATAMAGE  change
  38. into  the \MAGE directory and enter LEARN.  The batch file will re-display  the
  39. tutorial, which can be used as many times, by as many people, as necessary.
  40.  
  41.  
  42.                         DATAMAGE system specifications:
  43.  
  44.  
  45. DATAFILE TYPE - flat, headerless.  Compatible with MICROSOFT C and BASIC.
  46.  
  47. NUMBER OF DATAFILES - No limit
  48.  
  49. MAXIMUM RECORD SIZE - 10 Kbytes (10,240 bytes)
  50.  
  51. RECORDS IN DATAFILE - 32,000
  52.  
  53. RECORD NUMBERS - mandatory, unique
  54.  
  55. FIELDS IN RECORD - 200
  56.  
  57. MAXIMUM LENGTH OF STRING FIELD - 250 characters
  58.  
  59. NUMERIC CAPACITY - 17 digits
  60.  
  61. DECIMAL PRECISION - user selected or floating point
  62.  
  63. FILE INDEXES - five fields per file
  64.  
  65. FILE INDEX TYPES - Unique, Cross or Non-unique
  66.  
  67. BINARY INDEXES - up to 50 per file
  68.  
  69. BINARY INDEX FIELDS - up to eight per index
  70.  
  71. STATIC RELATIONALITY - none
  72.  
  73. DYNAMIC RELATIONALITY - up to eight datafiles
  74.  
  75. SYSTEM RECOVERY OF REORGANIZED DATAFILES - yes,  provided no fields  referenced
  76.      in MACRO or APPLICATION have been deleted.
  77.  
  78. dBASE FILE COMPATIBILITY - no
  79.  
  80. DATA IMPORT - yes, from dBase formatted files
  81.  
  82. DATA EXPORT - no
  83.  
  84. MULTI-USER (lan) CAPABILITY - no (version 4.4 will be lan compatible)
  85.  
  86.  
  87.                        THE PROGRAMS AND THEIR FUNCTIONS:
  88.  
  89.  
  90. 1.   BASE.EXE is the battlestar program of DATAMAGE.   It lists  and  displays
  91. records,  enters  new records,  updates records, and sorts the records  in  the
  92. datafile   and  can  perform calculations to extrapolate  data.   This  program
  93. employs   direct   disk  access and maintains  ram-based  numeric  counters  to
  94. provide the fastest d.m.s. environment going.
  95.  
  96. 2.   CONVERTR.EXE  imports  data  from  dBase  formatted  files.   Please   see
  97. CONVERTR.DOC for the way to convert a dBase file which is a two step process.
  98.  
  99. 3.  DBSEMAKR installs user-designed datafiles.  The documentation for  DBSEMAKR
  100. is found in the file DBSEMAKR.DOC.  The basics of computerized data storage and
  101. retrieval, as well as datafile design, are described in BASICS.DOC.
  102.  
  103. 4.  POWRCOPY moves data between datafiles.  It can be used to merge two or more
  104. datafiles,  or  to accomplish inter-datafile updates.  Real-life uses  of  this
  105. program  would  include  the  moving of certain parts of  a  sales  history  or
  106. customer  file  into  a new datafile designed for  sales  mail  management,  or
  107. updating  the "master" datafile from details of daily transactions  entered  as
  108. records on other computers.
  109.  
  110. 5.    POWRMAIL.EXE is a sales mail  manager.  This program is not  an  integral
  111. part of the DATAMAGE.  In fact, it is a  custom expansion  program developed to
  112. meet  the need of one of the first users of  THE DATAMAGE.    It   is  included
  113. not  only  to  provide the freebie proffered  on  the box, but to  show  how  a
  114. stand-alone, independent program can inter-act with  the DATAMAGE.
  115.  
  116. 6.  APCNMAKR.EXE is the DATAMAGE application generator.  APPLICATIONS MAKER  is
  117. a  rather  advanced program, and makes rather heavy demands of the  user  as  a
  118. result of it's power.
  119.  
  120. As  usual  within  DATAMAGE, there is no syntax to learn and no  text  file  to
  121. write.   Please  view  the  APCNMAKR.DOC  file  in  C:\MAGE\DOCS  for  complete
  122. instructions for this program.
  123.  
  124. 7.   GO.EXE  is the function selection program.  It allows the user  to  select
  125. multiple functions without leaving the system.
  126.  
  127. DOCUMENTATION:
  128.  
  129. Each  program except BASE.EXE has it's own doc file.  These files can be  found
  130. in the \MAGE\DOCS directory.  There is even a program designed to display/print
  131. the docs: VIEW.EXE  To familiarize yourself with it's (rather self-explanatory)
  132. operation  change into this directory and enter SEE_DOCS.  The batch file  will
  133. display documentation for the program to display the documentation.
  134.  
  135. BASE PROGRAM:
  136.  
  137. This file continues with the documentation for BASE.EXE program - the workhorse
  138. of DATAMAGE.  This program is very general in nature, and can be put to as many
  139. uses as their are users of it.
  140.  
  141. MODES OF OPERATION:
  142.  
  143. The  BASE  program  can  be operated, step by  step,  via  the  keyboard.   The
  144. functions of this program are accessed by pressing the appropriate key, usually
  145. a  function key.  The assignment of the function keys are detailed below.   All
  146. of the twenty-two functions available from the BROWSE screen, as well as  those
  147. available from the record display-update screen, have their own on-screen help.
  148. When  you press their associated keys the opportunity to display the  help  for
  149. the function will be presented.
  150.  
  151. In most real-life situations there will be the need for repetitive  operations;
  152. Operations  that  are  done  frequently.  To free the  user  of  having  to  do
  153. repetitive  operations  by  hand, time after time, the  BASE  program  supports
  154. MACROS.   The MACRO records the functions you choose to do your operation,  the
  155. order in which you use them, and the parameters you supply to them.
  156.  
  157. Once  recorded,  a MACRO can be "replayed."  The operation is  available  as  a
  158. whole.  These user-defined operations are invaluable in that they provide speed
  159. and also allow those who are, perhaps, incapable of doing the operation step by
  160. step to get the job done.
  161.  
  162. The  third  operation  mode  supported by the BASE  program  is  the  automated
  163. execution of a MACRO via command line argument.  This allows you to incorporate
  164. the program and a MACRO into a batch file or menuing system.  To run BASE  with
  165. a  command  line  MACRO you should always execute the program  from  DOS  (menu
  166. system,  batch file, etc.).  NEVER supply command line arguments  intended  for
  167. BASE to the GO program.
  168.  
  169. Let's  say  you  have  a datafile in which you keep  your  invoices  from  your
  170. suppliers, and a macro to separate, sort and list those invoices currently  due
  171. and payable.  Your datafile is named INVOICES and your MACRO is names PAYABLES.
  172.  
  173. By  starting the BASE program with the command  BASE  C:\MAGE\INVOICES\PAYABLES
  174. you may automatically execute your MACRO, and thereby obtain it's output.
  175.  
  176. It  should  be  noted that, in order to identify a  valid  MACRO  command  line
  177. argument,  BASE looks for a backslash ( \ ) in it.  If you have a  floppy  disk
  178. with  a datafile recorded in the root directory and you specify  A:PAYABLES  on
  179. the command line the program will not execute the MACRO.  Use A:\PAYABLES.
  180.  
  181. If  the  program  can't find the datafile you will get  a  disk  error.   After
  182. attempting to retry the operation and continually getting disk errors you  will
  183. be obliged to select the abort option.  The program will then end by  returning
  184. to MS-DOS command level.
  185.  
  186. If  the  program can't find the MACRO you will also get a  disk  error.   After
  187. giving  up and selecting abort, the program will return to the  BROWSE  screen.
  188. This  distinction is made to help you figure out what went wrong - perhaps  you
  189. have deleted the macro, or made a keying error in the command line argument.
  190.  
  191. When  the  command line argument is given the program will execute  the  MACRO,
  192. then  return  to MS-DOS command level.  If you are using a batch file  it  will
  193. continue  without user intervention.  If you are using a menu system  you  will
  194. return  to  it.   In any case, the program will NOT return you  to  the  GO.EXE
  195. (function selection) program as it does upon normal termination.
  196.  
  197. BASE PROGRAM FUNCTIONS:
  198.  
  199. F1 = ENTER FUNCTION:  Press to enter a new record.
  200.  
  201. F2  = DELETE FUNCTION:  Press to erase a record.  Records can be  deleted  from
  202. the current group, or erased in the datafile.  The latter is irreversible.  You
  203. may  also  delete all the records in the current group.  Be careful  with  this
  204. one.  It could be disastrous!
  205.  
  206. F3  =  PRINT  FUNCTION:  Press to output all records now in the  group  to  the
  207. printer.    Data fields in the Input/output group will be printed, data  fields
  208. not in the I/O group will be suppressed.
  209.  
  210. F4  =  PRINT FORMAT FUNCTION:  When sorting or  performing  calculations,  it's
  211. handy  to  have a file format sheet.  It details the file.  The FILE  MAPs  are
  212. also quite useful while originating APPLICATIONS with APPLICATIONS MAKER.
  213.  
  214. F5   =  FIND FUNCTION:  Press to find a record or place in the  current  order.
  215. The find record function operates, like many other DATAMAGE functions, upon the
  216. current  group of records.  The record you seek may be in the file, but not  in
  217. the group of records you have established via the select records functions.  In
  218. that  case  you will not be able to find the record.  Pressing ALT +  F-1  will
  219. restore all your records.  Then you may find it with the FILE indexes.
  220.  
  221. This  function finds records or sequences.  It has three types of INDEXES  that
  222. it  can  use.  The user-assigned RECORD NUMBERS, while not really an  index  as
  223. such,  constitute a UNIQUE INDEX that is always present in nay  DATAMAGE  file.
  224. The FILE indexes are datafiles on disk.  The BINARY indexes are the product  of
  225. the  SORT function (described next) and need no disk file.  But you may opt  to
  226. record the BINARY indexes to disk.  See the MARKER function, F-10.
  227.  
  228. FILE INDEXES:
  229.  
  230. The  file indexes are declared when the datafile is designed.  In the  datafile
  231. named  FILEINDX.RAD  there are ten bytes of data for each record  in  the  main
  232. file.   If you declared no fields as indexed when you designed your  file  then
  233. there will be no index file, and the find records function, file index  feature
  234. will be off line while the datafile having no file indexes is loaded.
  235.  
  236. To  find a record via the FILE indexes you select option 2 from the dialog  box
  237. after  pressing F-5.  You are prompted for the content of the target record  in
  238. each of the indexed fields.  To bypass a field just hit return.  When you  have
  239. entered all indexed fields the search is executed on the data you entered.
  240.  
  241. If  no  match is found it will beep you, and offer to retry the search.   If  a
  242. match is found one of two things may happen:  If you entered sufficient data to
  243. absolutely identify the record, i.e. the content of one field indexed as unique
  244. or all fields indexed as cross, you will return to BROWSE with your flasher  on
  245. the record, if possible in the middle of your screen.
  246.  
  247. If  you  entered the content of a field or fields indexed non-unique,  or  only
  248. some  of  the cross-indexed fields the record will be read  in  and  displayed.
  249. After you exit the record you will choose whether to continue the search.
  250.  
  251. BINARY INDEXES:
  252.  
  253. The BINARY indexes are COMPLETELY different.  They can be used to find a record
  254. but  to see them is this light is to mis-understand them, and thereby get  less
  255. use from them.  The BINARY indexes are about ORDER.
  256.  
  257. Let's  say  you have your datafile in order on two fields.  You opt  to  search
  258. BINARY and, like the FILE index search, you are prompted for the two fields.
  259.  
  260. The  first difference in the BINARY search is that you can't skip a field.   If
  261. you hit return on a field the search is executed on the data you entered.   The
  262. second difference is in what happens if you don't find a match.
  263.  
  264. If you enter data that finds no match the BINARY sort will produce the place in
  265. the current order where the data you entered WOULD be.  Because of this you can
  266. use the BINARY search to simply go somewhere in the BROWSE display.
  267.  
  268. When  using  the  BINARY search to find records it's up  to  you  to  determine
  269. whether  or not your search found a match.  The BINARY search is so often  used
  270. to find sequence, as opposed to matches, that it does not announce a  no-match.
  271. Match  or no, your BROWSE simply moves to the place in the current  order  that
  272. your entries produce.
  273.  
  274. DATAMAGE requires no disk file to do BINARY processing.  You may, however,  use
  275. the MARKER (F-10) function to record your BINARY index to disk.  See the MARKER
  276. file function description for how to maintain MARKERS to store BINARY indexes.
  277.  
  278. During  the BINARY search you are not afforded the option of ignoring case  and
  279. or  spacing.   In order to create an index to search BINARY you  will  need  to
  280. place  the  target  records  in order on your choice of  fields  via  the  SORT
  281. (F-6)  function.   Then  the targets of your BINARY search  will  be  the  same
  282. fields, counter or even record number you chose to order your records.
  283.  
  284. When  you  do your sort you will decide whether or not to ignore  case  on  all
  285. string  data,  and you may also ignore spacing unless you are  using  the  name
  286. field option.  The name field sorts can not ignore spacing as this would render
  287. the  sorting target a continuous string from which it would then be  impossible
  288. to separate first and last names.
  289.  
  290. When  you search this index your choices of ignoring case and spacing  will  be
  291. displayed.  You MUST use these choices when the index is searched.  You can not
  292. opt  to  ignore  case/spacing in the search and then  exactly  match  it  while
  293. searching the datafile as these choices affect the order produced in the index.
  294.  
  295. F6  =  SORT FUNCTION:  Press to put the current survivor group in  order.  This
  296. function  allows three basic targets:  The data in the file, the  user-assigned
  297. record numbers and the counter fields.  If the record numbers or counter fields
  298. are selected the sort, on a single target, is executed.
  299.  
  300. If  file data is selected you have several options.  If your target  is  string
  301. data  you  may select name-field or as numeric sorting.  You may select  up  to
  302. eight  target  fields of any data type, in any order.  Be aware,  though,  that
  303. using  lots of targets and having lots of records will cause the sort  to  take
  304. LOTS of time.
  305.  
  306. After the sort the BROWSE screen will display the records in whatever order you
  307. have  placed  them.   The target of the sort is now the target  of  the  BINARY
  308. SEARCH which is described above.
  309.  
  310. F7  = ALPHANUMERIC SELECT FUNCTION:  Press to select records  by  alpha-numeric
  311. criterion.   In  a name/address file, we wish to work with only  those  records
  312. in which the title field holds the data "PRESIDENT".
  313.  
  314. First,  we  must define the target of the search.  You may  search  either  one
  315. field  in the records, or all fields defined as string.  In this case, we  know
  316. where  the  data  is, in a field called title, number three.   So,  we  specify
  317. number three as the target of the selection process.
  318.  
  319. We  can match upper/lower case letters and ignore all spaces in our search,  or
  320. we can have the computer look for strict equality.  Likewise, we can specify an
  321. instring search, and get as survivors all those records that contain the search
  322. string, or specify equality, and end up with those records exactly equal to the
  323. search string.  Then, we enter the search value: PRESIDENT.
  324.  
  325. Finally, we specify that we want the survivors to contain the search value.  We
  326. could reject all records containing the search value as well.
  327.  
  328. The  selection crucible now loads all records in the current group,  and  tests
  329. field  three  to  see if the search value is there.  After  the  browse  screen
  330. returns  we  look  in the survivor records and find a goodly  number  of  VICE-
  331. PRESIDENTS may have been included if an instring search was performed.
  332.  
  333. F8  = NUMERIC SELECT FUNCTION:  Press to select records by  numeric  criterion.
  334. In  a customer file,  there is a field called amount due.   If we wish to  work
  335. with   a  group of only those records in which the balance is now greater  than
  336. zero  (accounts  with  a balance outstanding) we can  use  the  numeric  select
  337. function to reject those records having have a zero balance.
  338.  
  339. Like  the calc routine, the num-select function first asks for the  whereabouts
  340. of  the value to be tested.  In this case, say, the amount due field is  number
  341. four.   So,  we  direct the computer to look for the test  value  on  disk,  in
  342. field four.
  343.  
  344. Next, we must choose a comparison mode.  Since we want only the records holding
  345. a value of greater than zero, we select the greater that option from the menu.
  346.  
  347. Finally,  we must specify the whereabouts of the comparitor.  In this case  the
  348. test value is the same for all records, zero.  So, we specify a keyboard  entry
  349. as comparitor, and enter zero.
  350.  
  351. When  the selection crucible starts each record now in the group is  read  into
  352. the  buffer,  and it's test value compared to the comparitor.   If  the  record
  353. "fails" the test it will no longer appear on the browse screen, and will not be
  354. accessed by proceeding selection processes, nor appear on reports generated  by
  355. the  print function, or acted upon by the calc function.  For all  intents  and
  356. purposes, a non-survivor record is not in the file, at least, until the  group-
  357. reset function is used.
  358.  
  359. F9 = CODE FUNCTION:  Press to write a code to any  field  in all records in the
  360. current group.  The records containing the code or flag can then be  identified
  361. by  it's  presence.   Like F10, this function is used to identify  a  group  of
  362. records  not  in  memory.   When records are identified  in  this  manner,  the
  363. identification stays in the records until removed.
  364.  
  365. F10  =  MARKER FUNCTION:  Press to write/load a MARKER file, or to restore  the
  366. remaining records to the current group.
  367.  
  368. There are times when we want to work with multiple groups.  The current  group,
  369. and  even it's counter values, can be shuffled off to the disk  drive,   to  be
  370. re-loaded  when  needed.  Thus freeing the RAM for another group.   The  MARKER
  371. files  are also useful to pass your group of records to another program and  to
  372. record BINARY indexes.
  373.  
  374. The  MARKERs needn't contain all the records in the file, and can be  re-loaded
  375. and used without doing any searching of indexes, etc.  These MARKER files offer
  376. much more facility than what databases call indexes.
  377.  
  378. When  re-loaded, the browse function will display only those records that  were
  379. present  at  the  time of the write, and data in the counter fields, if  saved,
  380. will be restored to the values stored at the time of the write.
  381.  
  382. One  use  of  the MARKER files is to pass a group of records  to  the  POWRMAIL
  383. program.  The POWRMAIL program loads the MARKER file, and prints sticky  labels
  384. for the records included in it.
  385.  
  386. The MARKER files are transient, and probably won't be any good tomorrow.   They
  387. contain the INTERNAL record numbers of the group, and, tomorrow, that  internal
  388. record  number  may represent another record that may not meet  the  parameters
  389. specified.  This happens when a record is deleted.  A "hole" is created in  the
  390. file.    When  the next record is entered, the computer  searches  for  "holes"
  391. before   accessing  more disk space.  If it finds one, it is  filled  with  the
  392. record to be added.
  393.  
  394. There  is, however, a way to permanently define a marker file.  Simply  make  a
  395. MACRO  that processes the file and creates the marker.  Run the macro  whenever
  396. you wish to use the marker.
  397.  
  398. MAINTAINING BINARY INDEXES ON DISK:
  399.  
  400. DATAMAGE's BINARY indexes are just as loose as the rest of the program.  Unlike
  401. many  other programs, in which the fields comprising the BINARY index  must  be
  402. declared at file definition and require bulky B-TREE disk files, DATAMAGE gives
  403. you  the power to index your file any way you wish, any time you  wish.   There
  404. is, however, a small price to pay:  The other programs keep their disk files up
  405. to  date  (as you wait).  DATAMAGE does not automatically update files,  as  it
  406. does not require them.
  407.  
  408. Once  a  BINARY  INDEX is active, via sorting the current group  or  loading  a
  409. MARKER  file,  it is automatically maintained in MEMORY.  If  new  records  are
  410. entered or existing records updated and written to disk they will be placed  in
  411. their proper place in the current order.  But it's up to you to write the index
  412. back  to disk, by pressing F-10 and re-writing the MARKER file,  and sooner  or
  413. later you'll forget.  No big deal.
  414.  
  415. RESTORE REMAINING RECORDS OPTION:
  416.  
  417. To RE-INDEX a file simply load your most recent MARKER.  Then press F-10 again,
  418. and  use the restore remaining records option.  It will append any new  records
  419. since  the writing of the MARKER to the group, and all records will then be  in
  420. the  group.   Now you can re-sort them.  It won't take NEARLY as long  as  your
  421. initial  sort  because  most of the records are in order, thanks  to  your  old
  422. MARKER FILE.  The sort routine, having little to do, will do it quickly.
  423.  
  424. Having re-created your BINARY index in memory, hit F-10 and write it to disk.
  425.  
  426. ALT  + F1 = GROUP RESET FUNCTION:  Press to restore all records to the  current
  427. group, and reset counters to 0.  To access, press Alt + F1.
  428.  
  429. ALT + F2 = INPUT/OUTPUT FUNCTION:  Press to adjust the content of the I/O group
  430. (see glossary).
  431.  
  432. ALT  + F3  = CALCULATE FUNCTION:  Press to perform a calculation.   The  entire
  433. screen  will  clear,  and menus will guide you through the many  possible  ways
  434. you may calculate.
  435.  
  436. The calc function first asks the whereabouts of the first value, the one to  be
  437. acted upon.  The data must be numeric, and may be on disk, stored in one of the
  438. two  "counter" fields provided in RAM for each current survivor record,  or  it
  439. may be a keyboard entry.
  440.  
  441. Next, we enter the desired process, i. e. add, subtract, etc.
  442.  
  443. Then,  depending  on the process selected, we may enter the  whereabouts  of  a
  444. second  value, which may be the same as the first value.  If we simply want  to
  445. move  a value, say, from counter one to field eight in the file then  we  enter
  446. the  whereabouts  of only the first value.  If we want to add fields  four  and
  447. eight,  we must enter the whereabouts (field eight in the file) of  the  second
  448. value as well.
  449.  
  450. Finally, we are asked to specify where to place the results of the calculation.
  451. We  can  write  it to disk, or place it in a counter field, in  RAM.  Only  the
  452. records  in the current survivor group will be calculated.   Non-survivors  are
  453. ignored by the calc function.
  454.  
  455. ALT  +  F4  = TOTAL-AVERAGE FUNCTION:  Press to total or  average  any  numeric
  456. field.   Note   that  only  the  records now in the survivor  group   will   be
  457. totaled or averaged.
  458.  
  459. ALT + F5 = RE-NUMBER FUNCTION:  Press to change the user-assigned record number
  460. of the record whose number is flashing.
  461.  
  462. ALT + F6 = POSITION FUNCTION:  Press to enter the position in the file to which
  463. you  wish  to go.  If you are now at position 30, and want to go  to   position
  464. 4,000,  that's  a lot of PgDn keystrokes.  This way, you move directly to   the
  465. desired position.
  466.  
  467. ALT  + F7 = CHANGE MAIN DISPLAY field:  Press to see other data than the  first
  468. field  in line one of the browse screen.  Myself, I kind of like to  leave  the
  469. record name up there, and assign the alternate display field.  The main display
  470. area will not accept zero (be turned off).
  471.  
  472. ALT  +  F8  = CHANGE ALTERNATE DISPLAY field:  Press to  change  the  alternate
  473. display,  which  is a blank line when the program starts.  Some folks  like  it
  474. that   way, saying  it makes the display easier to read.  For that reason,  you
  475. may  turn  it off.   You may also display the counters in the  alternate;  this
  476. can't  be  done  with  the main display area.  The alternate  display  area  is
  477. automatically set after you do a sort, perform a calculation or select records,
  478. displaying the target data.
  479.  
  480. ALT  + F9 = LOAD FUNCTION:  Press to load another file and the menu   detailing
  481. the  datafiles  on the target disk re-appears.  Select another file  and  press
  482. return.
  483.  
  484. ALT  +  F10 = QUIT FUNCTION:  Press to end the BASE program and return  to  the
  485. function selection menu, from which you may exit THE DATAMAGE.
  486.  
  487. CTRL + F1 = BEGIN and END MACRO RECORDING:  (Ctrl + F1)  Press to  record   the
  488. proceeding  multi-record  functions  into a re-usable macro file.  If you   had
  489. a  datafile detailing your customer base you might well wish to have a  listing
  490. of those who owed you, possibly broken down into states or whatever.
  491.  
  492. Next  week,  you  need  the same information from the  file.   After  doing  it
  493. manually  until you are certain of your method, use F21 to make a macro of  the
  494. operation.
  495.  
  496. CTRL + F2 = EXECUTE A MACRO:  (Ctrl + F2)  Press to run a macro.  As you   will
  497. see, DATAMAGE runs in the hammer lane.
  498.  
  499. RECORD  DISPLAY/UPDATE  FUNCTIONS:
  500.  
  501. Press RETURN to display/update the highlighted (flashing) record on the  BROWSE
  502. screen.    The screen clears, and is filled by the names of the fields  in  the
  503. file,  and the data recorded in the record accessed.  The dialog box now  shows
  504. more functions accessed, this time, by the first (CAPITAL) letter.
  505.  
  506. QUIT  FUNCTION:  Press to end display of current record, and return to  browse.
  507. If you have changed the data on the screen, using the QUIT will NOT write  your
  508. update(s) to disk.
  509.  
  510. WRITE  FUNCTION:  Press to write the data on the screen to disk in  the  record
  511. number  appearing on the screen.  The routine will check the indexes,  if  any,
  512. and refuse to write a duplicate.
  513.  
  514. RESET   FUNCTION:   Press to reset flashing field to original or  merge  value.
  515. Original value will appear unless another record has been merged.
  516.  
  517. PRINT FUNCTION:  Press to output the current record to the printer.
  518.  
  519. MERGE  FUNCTION:   Press to load another record.  This record's  data  is  made
  520. available to move into the current screen with the RESET function.
  521.  
  522. CREATE FUNCTION:  Press to write the data on screen to a new record.  A  number
  523. for  the  new  record  is entered, and the indexes, if  any,  are  checked  for
  524. duplicates.  The routine will refuse to write on index violations, and  display
  525. the offending index.
  526.  
  527. DATA  ENTRY/UPDATE  FUNCTION:  Press RETURN to enter/update the  flashing  data
  528. field.   The dialog box clears, and the first line details the field  accessed,
  529. while the second line lists the cursor movement keys.
  530.  
  531. The last line has the available functions.  If the  field is  numeric, the Add,
  532. Subtract, Multiply and Divide functions are present.  These functions emulate a
  533. calculator, with its' register loaded to the value stored in the field.
  534.  
  535. When the field contains the desired data, press RETURN to end edit.
  536.  
  537. GLOSSARY:  computer buzzwords as defined in this package.
  538.  
  539. ABSOLUTE field NUMBERS:   This is a number  assigned to each field as it enters
  540. the file.  If a field is deleted it's absolute number is never re-used.   These
  541. numbers give DATAMAGE the ability to execute operations that  reference  fields
  542. in files that have been reorganized.
  543.  
  544. APPLICATION:   An  application is a file generated by  the  APPLICATIONS  MAKER
  545. program.   This may be likened to a computer program, though it lacks  some  of
  546. the  major  characteristics  of  same.  It is, however,  a  way  to  design  and
  547. implement your own processes using most of the capabilities of DATAMAGE.
  548.  
  549. All  applications  have the file extension .APL, preceded  by  a  user-assigned
  550. filename.  They also contain a user-originated description of up to thirty-five
  551. characters, which is displayed in a menu by the APPLICATION MAKER program.
  552.  
  553. AUTOEXIT.MAC:   The  AUTO EXIT MACRO automatically executes every time  a  user
  554. leaves the datafile after entering, deleting or editing records.  It is used to
  555. keep MARKER FILES up to date.
  556.  
  557. BINARY INDEX:  A BINARY INDEX is an order of the records in the current file or
  558. survivor  group.  The field(s) upon which the records are ordered are  selected
  559. by the user.  The record numbers and the counter fields may also be used as the
  560. source data for a BINARY INDEX.
  561.  
  562. Unlike the FILE INDEX, the BINARY INDEX may, or may not, be recorded to disk.
  563.  
  564. CASE/SPACING:    If  you direct the program  to  ignore case and  spacing  then
  565. entering  `fredjones' will include records containing FRED JONES,  Fred  Jones,
  566. and  Fred JONES.  If you opt for strict equality only those records  containing
  567. an exact match of the search string will be placed into the group.
  568.  
  569. CLASS:    fieldS  can have one of four formats: Numeric fieldS  store  numbers.
  570. Numeric   dollar format fieldS are processed as any other numeric  field,   but
  571. will  appear  on reports formatted with $ , commas and two   decimals.   String
  572. fieldS  store  words as well as numbers, spaces, etc., and  date  fieldS  store
  573. dates, in either of the popular formats.
  574.  
  575. COUNTER field:  One of sixty-four thousand double precision variables  provided
  576. in RAM or on disk to hold the results of calculations  done  on the data in the
  577. datafile.   Two  counters are provided for each survivor record.  They  can  be
  578. considered as the numeric fields that aren't there, but can still be used.
  579.  
  580. CROSS-INDEXING:    When  a  field is declared as  cross-indexed,  it  is
  581. combined  with  all other indexes declared as cross-indexed to  form  a  unique
  582. index.   For  example, we might have a datafile compatible  with  the  POWRMAIL
  583. format in which we also keep our customer billing data.  Realizing that we  may
  584. have  two  customers  with  the same name, and that  we  also  might  have  two
  585. customers  at  the same company with the same phone number, we could  create  a
  586. cross index on this file that combined the name and phone number fields.
  587.  
  588. That way, the computer wouldn't balk if we tried to enter two records with  the
  589. same  name,  or the same phone.  But, if we tried to enter a  record  that  had
  590. duplications in both the name and the phone number, it would be rejected.
  591.  
  592. When  you  are  searching  the  datafile  for  a  record  the  indexes  operate
  593. independently  of each other;  you may select any, all, or any  combination  of
  594. the  fields  declared  as  indexed.  Case/spacing  can  also  be  ignored  when
  595. searching indexes, but will be STRICTLY MATCHED when entering records.
  596.  
  597. DATAFILE:   First  and  foremost, a datafile is a  disk  file.   All  datafiles
  598. produced  by this program are called YOURDATA.RAD.  A datafile is divided  into
  599. records,   which   are divided into fields.  A datafile  can   contain   32,000
  600. records, that can contain 200 fields, each.
  601.  
  602. A datafile can contain any information.  From recipes and their ingredients, to
  603. the kilotonage of a nuclear blast produced by varying quantities of fissionable
  604. material.
  605.  
  606. DATAFILE  DEFINITION:   Once a user datafile has been  designed,  the  DBSEMAKR
  607. program will write the datafile definition to disk.  To define a new  datafile,
  608. use DBSEMAKR.
  609.  
  610. DATAFILE   DEFINITION   FILES:   The  diskfiles   HEADINGS.SAD,   KEY.SAD   and
  611. CTRLFILE.RAD  comprise  the datafile definition files.  The  file  HEADINGS.SAD
  612. holds  the  names  you give to the fields in the datafile.   The  file  KEY.SAD
  613. holds four numbers for each field in the datafile.  The first is the class,   0
  614. through 3.  0=date, 1=string,  2=numeric,  3=numeric  dollar format  The second
  615. is the length of the field on disk.
  616.  
  617. The  third number details if and how the  field  is indexed if the field  holds
  618. string  data, the number of decimals (0-8) to record if the field  is  numeric,
  619. and  the  format of the date (1=MM/DD/YY  2=DD/MM/YY) of date fields.   If  you
  620. specify  9 as the number of decimals the programs do not round data going  into
  621. the field.
  622.  
  623. The fourth number is the absolute field number, a unique identifier.
  624.  
  625. The file CTRLFILE.RAD  holds the record numbers, 1 - 32767, that you choose  to
  626. identify the records.  The file extension .SAD connotes a sequentially accessed
  627. disk file, while the file extension .RAD connotes a random access diskfile.
  628.  
  629. When the programs start, these files are read, error checked, and the  datafile
  630. file is opened according to the instructions they hold.  The programs will  not
  631. operate without these files.
  632.  
  633. FIELD:  Within records are fields.  As a record is a subset of a datafile,  and
  634. describes  a  unit of the datafile, so a field is a subset  of  a  record,  and
  635. describes  the same attribute of the record as do the fields in other  records.
  636.  
  637. For  example, we might have a field in our datafile called price.  And a  field
  638. called  cost.   So, in each record, representing each item we sell, we  have  a
  639. field holding the items' cost, and our price.  The cost is in field number  two
  640. and  the  price is in field number three.  Making an operation such as  raising
  641. all our prices ten percent take ten seconds instead of hours of shuffling paper
  642. records.  A FIELD is also called a DATA SEGMENT.
  643.  
  644. FILE INDEX:  The purpose of a file index is to identify a record in the file by
  645. its'  contents,  rather  than  its' record number.  If  a  file  index  is  not
  646. available  for  a field each record will have to be read from  disk  and
  647. checked  for that value.  The sort routines in this package do that, but,  when
  648. processing files with many records it takes time.
  649.  
  650. The  file index fills the need for speed by producing a numeric value for  each
  651. indexed  field  of each record, and placing it in the computers' memory.   That
  652. takes a lot of memory; in fact, 80,000 bytes of RAM are assigned this task when
  653. 8,000 records are loaded by the program.  When the user enters a search  value,
  654. the contents of an index in a particular record, the program assigns a  numeric
  655. value  to  it,  and compares it to the values stored in  RAM  for  that  index,
  656. thereby bypassing the need to read the records from the disk and compare  their
  657. contents to the search value, as in a sort.
  658.  
  659. Unlike  a sort, the full value contained in the record must be entered  as  the
  660. search  value.  James Brown, JAMES BROWN, and James  Brown (2 spaces)  are  all
  661. the  same values.  The indexes can not be searched for Brown.  To do that,  use
  662. select records alpha.
  663.  
  664. FLAG:  A coded message occupying a string  field  designed to hold it.  A  flag
  665. is a message left in the record, and can have any meaning you assign.  Used  to
  666. reflect  certain  conditions  in  the  record, and  to  sort  for  the  records
  667. containing the flag.
  668.  
  669. INSTRING  SEARCH:   The  SELECT  RECORDS ALPHA  routine  offers  two  modes  of
  670. matching:   Strict  equality  and an instring search.  If you  opt  for  strict
  671. equality and enter FRED as your search string only those records containing the
  672. word fred (and  nothing else)  will  be placed into the group.  If you opt  for
  673. an instring  search  all records containing the word fred, along with any other
  674. data that happens to be there, will get into the group.
  675.  
  676. MACRO:   Not  a  single process, but any  series  of  multi-record  operations,
  677. recorded  to disk while they were being done by the program.  Once recorded,  a
  678. macro can be "replayed" and may well produce different results, if the data  in
  679. the datafile has changed.
  680.  
  681. MARKER:   A  diskfile  that records the record numbers and  number  of  current
  682. survivors,  along  with  their counters, if any.   Sorting  place  markers  are
  683. useful to eliminate some records, then take some action on the remainder.  They
  684. provide the ability to re-load the previous survivor group, with counters, from
  685. disk, and continue processing with the previous group.
  686.  
  687. I/O   GROUP:   As the survivor group is a group of records  stored  in  memory,
  688. the  I/O group is a group of  fields  stored in memory.  The declaration of  an
  689. I/O  group  tells  the program which of the fields  to  display  on  the
  690. screen, accept from the keyboard, or print on the printer.
  691.  
  692. Using an I/O group saves you the time taken to search out relevant  information
  693. from a listing of the whole record.
  694.  
  695. MS-DOS  LEGAL  PATHNAME:   The programs ask the user to enter  a  MS-DOS  legal
  696. pathname  for marker and relational group diskfiles written and  read.   Anyone
  697. who uses this program without a thorough, hands-on understanding of the  MS-DOS
  698. disk operating system, and its "tree" directory structure is inviting disaster.
  699.  
  700. To  familiarize  yourself,  if  you have not  already,  with  the  MS-DOS  disk
  701. operating system, review the manual that came with your computer, or acquire  a
  702. readily-available  privately authored textbook.  MS-DOS is by far  the  easiest
  703. computer operating system ever designed.
  704.  
  705. NON-UNIQUE  INDEX:  When a field is indexed as non-unique, the  computer
  706. will  allow  duplicate  entries.  When searching a  non-unique  index  multiple
  707. matches  may,  therefore, be found.  The user views the record on  the  screen,
  708. then decides to accept the record or to continue the search.
  709.  
  710. NUMERIC:   A numeric  field  can hold only numbers, and the decimal point.   It
  711. can be used in all number-oriented operations, as well as to print or view.
  712.  
  713. RECORD:   A record in a datafile describes a single item, that is in  some  way
  714. similar  to the rest of the items in the datafile.  For example, we might  find
  715. both  sacked manure and ten carat diamond pendants in the same  datafile.   The
  716. similarity  between these two items is that both are sold by the  same  general
  717. store.
  718.  
  719. RECORD ENTRY:  The act of typing in records from the keyboard to the  datafile,
  720. whether  new  or  established.   All  fields  entered  can  be  re-checked  and
  721. corrected before data is written to disk.
  722.  
  723. SELECT RECORDS:  When records are selected a data in the record is compared  to
  724. a  comparitor.   The records that compare positively (true) are placed  in  the
  725. survivor group, and those who compare negatively (false) are not.  This process
  726. is known as an EXCLUSIVE SORT, or just sort.
  727.  
  728. SELECT RECORDS ALPHA:  A sort that uses string, or  alphanumeric,  fields,  and
  729. compares strings to strings.
  730.  
  731. SELECT  RECORDS NUMERIC:  A sort that uses numeric fields, and  compares
  732. numbers  to  other  numbers.  Since dates are essentially  numeric  data,  when
  733. stripped  of  their delimiters, they are selected as numeric data.   To  get  a
  734. group  of  records  on/after XX/XX/XXXX and  on/before  XX/XX/XXXX  use  select
  735. records by numeric comparison.
  736.  
  737. STRING:   A  string field can contain both letters and numbers.  If it contains
  738. numbers,  they  are  available for printing or viewing only,  and  can  not  be
  739. totaled, averaged, or used in the manner of a numeric field.
  740.  
  741. SURVIVOR GROUP:  This package provides a real, rather that figurative  survivor
  742. group.   After  a sorting operation excludes some records from  the  group  the
  743. screen  displays only the records now in the group, ignoring records that  have
  744. not "passed" the sorting "tests" specified by the user.
  745.  
  746. UNIQUE INDEX:  When a field is declared as unique all records must  hold
  747. a  different  value in that  field.   The advantage of this is  that  only  one
  748. match for a search value will be found.  The dis-advantage occurs during record
  749. entry-updating,  when the computer refuses to accept a new record because of  a
  750. duplicate found in another record.
  751.  
  752. UPDATE:  The act of changing the information stored in the datafile.
  753.  
  754. WRAP-UP:
  755.  
  756. In  case you haven't had enough, the instructions for the other programs  await
  757. you in their own files.
  758.  
  759. Allow  me  to  thank you for trying THE DATAMAGE, and to  apologize  for  these
  760. instructions,  which certainly leave something to be desired.  I  believe  that
  761. something is the skill of someone who specializes in communicating with  people
  762. via the written word.  Don't look at me, I am only just learning to communicate
  763. with a computer, via keyboard.  IF a few people register I will pay somebody to
  764. come up with a proper manual.
  765.  
  766. Version 4.0, released 9-15-1991
  767.  
  768. TO THE PROFESSIONAL:
  769.  
  770. You may not utilize the DATAMAGE package as a part of your systems produced for
  771. a fee without contacting me and presenting your credentials.  I do not want the
  772. name DATAMAGE sullied by a bunch of amateurs.  Your failure to do this will  be
  773. considered  COPYRIGHT  VIOLATION, and appropriate action will  be  taken.   The
  774. standard judgment for COPYRIGHT VIOLATION is $25,000.00.
  775.  
  776. Any and all systems generated for a second party are subject to a surcharge  of
  777. 10%  calculated on the gross sale.  I have left you lots of fat.   DATAMAGE  is
  778. between 50 and 95% of any business system you may desire to create.
  779.  
  780. In the MAGE\DOCS directory you  will find code, in BASIC and C, to   load   and
  781. access   a  DATAMAGE  file.  OK, so you want to write  a  random-file  program.
  782. First  thing you run into is that there is no file for the program to process.
  783.  
  784. Why not enter a few records with DATAMAGE?  And, later on, when you're  writing
  785. to  the  file(s)  in your system, and you wonder whether  what  you  wrote  was
  786. correct why not just load the file with DATAMAGE?
  787.  
  788. Certainly, the general-purpose datafile manipulation capabilities found  within
  789. DATAMAGE will be of great use to your end user, and provide the overall  system
  790. you  deliver with power that would have cost the customer a BUNDLE had it  been
  791. necessary to hard code it into his program.
  792.  
  793. And,  finally,  there's the overhead.  If your user is obliged  to  buy  dBase,
  794. Lotus (etc.) to run your system the overhead is high.  But a copy of  DATAMAGE,
  795. at $80 US, is hardly noticed.