home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol163 / parms.bas < prev    next >
Encoding:
BASIC Source File  |  1984-04-29  |  3.4 KB  |  97 lines

  1.     REM------FILE PARMS.BAS
  2.  
  3.     REM PROGRAM PARAMETER DEFINITION MODULE
  4.     COMMON KEYWD$(1),LIBNAME$,RLEN%,TRUE%,AUTH.LEN%,TITL.LEN%
  5.     COMMON MAXBIB%,MAXDESC%,MAXDEF%,MAXKEYS%,MAXCON%,CONCEPT$(1)
  6.     COMMON ISS.LEN%,CLEAR$,ERR%,JOUR.LEN%,KWD.LEN%,CMD$(1)
  7.     COMMON LFT%(1),RGHT%(1),CON.KEY%(2),CON.RATE(2),QUERY$,L%
  8.     DIM SPARM%(4)
  9.  
  10.     SPACE%=FRE
  11.     SPACE%=SPACE%-4000
  12.  
  13. 10      PRINT CLEAR$
  14.     PRINT TAB(2);"----PARAMETER DEFINITION FOR ";
  15.     PRINT LIBNAME$;"----":PRINT
  16.     PRINT \
  17.            "THIS MODULE WILL DEFINE THE PARAMETERS FOR THE LIBRARY "; LIBNAME$
  18.     INPUT "IF YOU DO NOT WISH TO PROCEED ENTER S ELSE ENTER C: "; LINE ANS$
  19.     IF UCASE$(LEFT$(ANS$,1))<>"C" THEN STOP
  20.     PRINT \
  21.        "** FIRST WE DEFINE THE ARTICLE RECORD FIELD SIZES **"
  22.  
  23. 12      PRINT \
  24.        "YOU HAVE A MAXIMUM OF 250 CHARACTERS THAT MAY BE ALLOCATED"
  25.     PRINT \
  26.        "FOR  EACH ARTICLE RECORD.  EACH KEYWORD DESCRIPTOR ATTACHED"
  27.     PRINT "WILL CONSUME THREE OF THESE."
  28.     INPUT \
  29.        "WHAT IS THE MAXIMUM NUMBER OF DESCRIPTORS PER ARTICLE? ";MAXDESC%
  30.     PRINT USING "YOU HAVE ### CHARACTERS REMAINING."; 250-3*MAXDESC%
  31.  
  32. 13     PRINT \
  33.        "ENTER MAXIMUM FIELD LENGTHS, IN ORDER, FOR AUTHOR, TITLE,"
  34.     PRINT \
  35.        "JOURNAL, AND ISSUE---ALL ON ONE LINE,  SEPERATE ENTRIES BY"
  36.     PRINT \
  37.         "ONE OR MORE SPACES AND FOLLOW LAST ENTRY WITH RETURN."
  38.     GOSUB 100
  39.     IF V%<>5 THEN \
  40.          PRINT "INCORRECT NUMBER OF ENTRIES -- RE-ENTER": \
  41.       GOTO 13
  42.     AUTH.LEN%=SPARM%(1) : TITL.LEN%=SPARM%(2)
  43.     JOUR.LEN%=SPARM%(3) : ISS.LEN% =SPARM%(4)
  44.     RLEN%=AUTH.LEN%+TITL.LEN%+JOUR.LEN%+ISS.LEN%
  45.     RLEN%=RLEN%+3*(MAXDESC%+1)+2
  46.     IF RLEN%>255 THEN \
  47.          PRINT USING "RECORD CONTAINS ##### CHARACTERS"; RLEN%-5 : \
  48.          PRINT "THE MAXIMUM IS 250 --PLEASE RE-DEFINE FIELDS" : \
  49.          GOTO 12
  50.  
  51.     PRINT CLEAR$
  52.     PRINT "** NOW WE SET THE MAXIMUM SIZES OF OTHER PARAMETERS **"
  53.  
  54. 40      PRINT "ENTER, IN ORDER, THE MAX TO BE ALLOWED FOR :"
  55.     PRINT "CHARS PER KEYWORD, NO. OF KEYWORDS IN VOCABULARY (<256)"
  56.     PRINT "NO. CONCEPTS PER INTERROGATION, NO. KEYWORDS PER CONCEPT."
  57.     PRINT "SEPARATE ENTRIES BY SPACES AND FOLLOW LAST WITH RETURN."
  58.     GOSUB 100
  59.     IF V%<>5 THEN PRINT "INCORRECT NUMBER OF ENTRIES -- RE-ENTER" : \
  60.          GOTO 40
  61.     KWD.LEN%= SPARM%(1)  : MAXKEYS%=SPARM%(2)
  62.     MAXCON% = SPARM%(3)  : MAXDEF% =SPARM%(4)
  63.     IF MAXKEYS%>255 THEN MAXKEYS%=255
  64.     INPUT "CAPACITY OF ONE SIDE OF ONE DISK (KILOBYTES): ";D.CAP
  65.     KY.FIL%=2*MAXKEYS%*(KWD.LEN%+2)
  66.     KY.FIL%=1024*(INT%(KY.FIL%/1024)+1)
  67.     D.CAP=(1000*D.CAP-1024-KY.FIL%)/RLEN%:D.CAP=D.CAP-1
  68.     RL%=8*(MAXCON%+1)*(MAXDEF%+2)
  69.     IN%=2*(MAXCON%+1)*(MAXDEF%+1) + 4*(MAXCON%+1)
  70.     ST%=(MAXKEYS%+1)*KWD.LEN%
  71.     MEM%=(SPACE%-RL%-IN%-ST%)/2
  72.     PRINT USING "YOU HAVE DISK SPACE FOR ###### ARTICLES. "; D.CAP
  73.     PRINT USING "YOU HAVE MEMORY SPACE FOR ###### ARTICLES. "; MEM%
  74.     IF MEM%<D.CAP THEN MSPACE=MEM% ELSE MSPACE=D.CAP
  75.     PRINT USING "###### ARTICLES IS THE MAXIMUM YOU MAY HAVE. "; MSPACE
  76.     INPUT \
  77.         "DO YOU WISH TO RE-ALLOCATE THE AVAILABLE SPACE (Y/N?) ";LINE ANS$
  78.     IF UCASE$(LEFT$(ANS$,1))="Y" THEN 10
  79.     INPUT "MAXIMUM NO. OF ARTICLES DESIRED: ";MAXBIB%
  80.     IF MAXBIB%>MSPACE THEN MAXBIB%=MSPACE
  81.  
  82.     CREATE LIBNAME$+".DEF" AS 1
  83.     PRINT #1;MAXKEYS%,MAXDESC%,MAXDEF%,MAXCON%, \
  84.            MAXBIB%,AUTH.LEN%,TITL.LENS%,JOURN.LEN%,ISS.LEN%, KWD.LEN%
  85.     CLOSE 1
  86.     CHAIN "BIBLIO"
  87.  
  88. 100     INPUT "> ";LINE DUM$ :  I%=1 : V%=1
  89.     WHILE (I%<LEN(DUM$)) AND (V%<5)
  90.       WHILE MID$(DUM$,I%,1)=" " : I%=I%+1 : WEND
  91.     SPARM%(V%)=VAL(RIGHT$(DUM$,LEN(DUM$)-I%+1))
  92.     V%=V%+1
  93.     WHILE (MID$(DUM$,I%,1)<>" ") AND (I%<LEN(DUM$)):I%=I%+1:WEND
  94.     WEND
  95.     RETURN
  96.  
  97.