home *** CD-ROM | disk | FTP | other *** search
/ Share Gallery 1 / share_gal_1.zip / share_gal_1 / BF / BF015.ZIP / PCPM4.EXE / arc / CPAHOLY.BAS < prev    next >
BASIC Source File  |  1987-02-12  |  6KB  |  331 lines

  1.     REM **** CPAHOLY ****
  2.     common cpafile$
  3.  
  4.  UpperCase:
  5.    def fnucase$(cpafile$)
  6.       length=len(cpafile$)
  7.  
  8.       if length =0 then
  9.          exit def
  10.       end if
  11.  
  12.       for I=1 to length
  13.          ch=asc(mid$(cpafile$,I,1))
  14.  
  15.             if ch > 96 and ch < 127 then
  16.             mid$(cpafile$,I,1)=chr$(ch-32)
  17.          end if
  18.  
  19.         next
  20.  
  21.       fnucase$=cpafile$
  22.    end def
  23.  
  24.     cls
  25.     DEFINT A-Z:DEFSNG H,T,Y,D
  26.    DIM H(1000),D$(12)
  27.    CLOSE
  28.    PRINT "**** THIS MODULE CREATES AND MANAGES HOLIDAY [.HOL] FILES ****"
  29.    D$(2)="February"
  30.    D$(3)="March"
  31.    D$(4)="April"
  32.    D$(5)="May"
  33.    D$(6)="June"
  34.    D$(7)="July"
  35.    D$(8)="August"
  36.    D$(9)="September"
  37.    D$(10)="October"
  38.    PRINT
  39.    D$(1)="January"
  40.    D$(11)="November"
  41.    D$(12)="December"
  42.    RSVRD$=".BAS":EXTN$=".HOL"
  43.  
  44. Start:
  45.  
  46.     if len(cpafile$) >0 then
  47.         F9$=cpafile$
  48.         goto commndfile
  49.     end if
  50.  
  51. 50 INPUT "Enter the name of the base data file ";F9$
  52.     cpafile$=F9$
  53.     cpafile$=fnucase$(cpafile$)
  54.     F9$=cpafile$
  55.  
  56.     commndfile:
  57.      GOSUB 12000
  58.  
  59.     F$=F9$
  60.  
  61.     GOSUB CheckFileName                 '10250
  62.  
  63.      IF F9=1 THEN
  64.         goto start                       '50
  65.      end if
  66.  
  67.      GOSUB ReadHoliday                  '8000 READ HOLIDAY FILE
  68.  
  69.      IF N=0 THEN
  70.         goto HolidayEnter                '500
  71.      end if
  72.  
  73. ListOfHolidays:
  74. 310 PRINT "**** LIST OF HOLIDAYS FOR THE BASE DATA FILE ";G$;"****"
  75.      PRINT
  76.  
  77.     FOR I=1 TO N
  78.         D8=H(I)
  79.         GOSUB CvtCentDaMMDDYY                  '4500
  80.         PRINT I;D$(M5);D5;"19";RIGHT$(STR$(Y5),2)
  81.  
  82.         IF I MOD 20=0 THEN
  83.             INPUT "Press ENTER to Continue ",Q$
  84.         end if
  85.  
  86.      NEXT I
  87.  
  88.     PRINT
  89.  
  90. Ask4Change:
  91. 320 INPUT "Do you want to change, add, delete or quit (C/A/D/Q) ";Q$
  92.  
  93.      IF Q$="Q"or Q$="q" THEN
  94.         goto 440
  95.      end if
  96.  
  97.      IF Q$="D" THEN
  98.         goto DeleteHol                '2000
  99.      end if
  100.  
  101.      IF Q$="A" or Q$="a" THEN
  102.         goto HolidayEnter             '500
  103.      end if
  104.  
  105.      IF Q$<>"C" or Q$<>"c" THEN
  106.         BEEP
  107.         GOTO HolidayEnter             '320
  108.      end if
  109.  
  110. 350 INPUT "Enter number of holiday to change ";K
  111.  
  112.      IF K>N THEN
  113.         goto 350
  114.      end if
  115.  
  116.     INPUT "Enter new date in MM,DD,YY format ";M6,D6,Y6
  117.  
  118.      GOSUB GetDayOfCent                    '5000
  119.  
  120.     H(K)=D8
  121.      GOTO ListOfHolidays                   '310
  122.  
  123. 440 GOSUB WritAr2Fil                      '3000
  124.      close
  125.      chain "CPAMENU"
  126.  
  127. HolidayEnter:
  128. 500 INPUT "Enter holiday in MM,DD,YY format (0,0,0 if end) ";M6,D6,Y6
  129.  
  130.      IF M6=0 THEN
  131.         goto ListOfHolidays           '310
  132.      end if
  133.  
  134.      GOSUB GetDayOfCent                    '5000
  135.  
  136.      N=N+1
  137.     H(N)=D8
  138.      GOTO HolidayEnter                     '500
  139.  
  140. EnterHolidays:
  141. 1000 I=0
  142.      PRINT "**** ENTER HOLIDAYS IN MM,DD,YY FORMAT - ENTER 0,0,0 IF AT END ****"
  143.  
  144. 1020 I=I+1
  145.      PRINT "Enter holiday";I;
  146.       INPUT M6,D6,Y6
  147.  
  148.       IF M6=0 THEN
  149.          goto 1090
  150.       end if
  151.  
  152.       GOSUB GetDayOfCent                   '5000
  153.  
  154.       H(I)=D8
  155.  
  156.       GOTO 1020
  157.  
  158. 1090 N=I-1
  159.  
  160.       GOTO ListOfHolidays                   '310
  161.  
  162. DeleteHol:
  163. 2000 'DELETE
  164.  
  165. 2010 INPUT "Enter number of holiday to delete ";K
  166.       IF K=0 THEN
  167.          goto ListOfHolidays              '310
  168.       end if
  169.  
  170.       IF K>N THEN
  171.          BEEP
  172.          PRINT "**** INVALID RESPONSE - MAXIMUM IS";N;"****"
  173.          GOTO DeleteHol                    '2010
  174.       end if
  175.  
  176.      FOR J=K TO N-1
  177.          H(J)=H(J+1)
  178.       NEXT
  179.  
  180.       N=N-1
  181.       GOTO ListOfHolidays               '310
  182.  
  183. WritAr2Fil:
  184. 3000 REM WRITE ARRAY TO FILE
  185.       INPUT "File changes or Quit (F/Q) ";Q$
  186.  
  187.       IF LEFT$(Q$,1)="Q" or left$(Q$,1)="q" THEN
  188.          RETURN
  189.       end if
  190.  
  191.      PRINT "**** FILENAME IS ";F9$;" ****"
  192.      OPEN F9$ FOR OUTPUT AS #1
  193.  
  194.       FOR I=1 TO N
  195.          WRITE #1,H(I)
  196.       NEXT I
  197.  
  198.      CLOSE #1
  199.      RETURN
  200.  
  201.       REM ** CONVERT CENTURY DAY TO MM, DD, YY **************************
  202.  
  203. CvtCentDaMMDDYY:
  204. 4500 T9=INT(D8/1461)
  205.      Y5=INT((D8-T9+364)/365)
  206.      Y4=D8-INT((Y5-1)*1461/4)
  207.       L8=2
  208.  
  209.       IF Y5/4=INT(Y5/4) THEN
  210.          L8=1
  211.       end if
  212.  
  213.       T9=Y4
  214.  
  215.       IF T9>61-L8 THEN
  216.          T9=T9+L8
  217.       end if
  218.  
  219.      M5=INT((T9*9+269)/275)
  220.      D5=T9-INT(M5*275/9)+30
  221.      D4=D8-INT(D8/7)*7+1
  222.       RETURN
  223.  
  224.      REM ** GET DAY OF CENTURY OF STARTING DATE **
  225.  
  226. GetDayOfCent:
  227. 5000 L8=2
  228.       IF INT(Y6/4)=Y6/4 THEN
  229.          L8=1
  230.       end if
  231.  
  232.       D7=INT(M6*275/9)+D6-30
  233.  
  234.       IF M6>2 THEN
  235.          D7=D7-L8
  236.       end if
  237.  
  238.      D8=INT((Y6-1)*1461/4)+D7
  239.       RETURN
  240.  
  241. ReadHoliday:
  242. 8000 ON ERROR GOTO 8200
  243.      OPEN F9$ FOR INPUT AS #1
  244.      J=0
  245.  
  246. 8030 J=J+1
  247.       IF EOF(1) THEN
  248.          goto 8100
  249.       end if
  250.  
  251.      INPUT #1,H(J)
  252.      GOTO 8030
  253.  
  254. 8100 N=J-1  'NUMBER OF HOLIDAYS
  255.  
  256. 8110 CLOSE #1
  257.      RETURN
  258.  
  259. 8200 IF ERR=53 THEN 
  260.           PRINT "**** NEW FILE ****"
  261.      end if
  262.  
  263.       RESUME 8110
  264.  
  265.      GOTO 11000
  266.       PRINT "**** NEW FILE ****"
  267.       CLOSE #1
  268.       GOTO EnterHolidays                '1000
  269.  
  270. CheckFileName:
  271. 10250 REM SUBROUTINE TO CHECK FILENAMES - PASS IN F9$
  272.       F9=0
  273.         L9=LEN(F9$)
  274.  
  275.         IF L9>12 OR L9<1 THEN
  276.             BEEP
  277.             GOTO 10274
  278.         end if
  279.  
  280.       I9=INSTR(F9$,".")
  281.         IF I9<>0 THEN
  282.             goto 10266
  283.         end if
  284.  
  285.         IF L9<9 THEN
  286.             F9$=F9$+EXTN$
  287.             ELSE F9$=LEFT$(F9$,8)+EXTN$
  288.         end if
  289.  
  290.         GOTO 10280
  291.  
  292. 10266 IF RIGHT$(F9$,4)=EXTN$ THEN
  293.             goto 10280
  294.         end if
  295.  
  296.         PRINT "**** WRONG EXTENSION - PLEASE DIAL AGAIN ****"
  297.         BEEP
  298.         GOTO 10278
  299.  
  300.         IF RIGHT$(F9$,4)=RSRVD$ THEN
  301.             goto 10272
  302.             ELSE goto 10280
  303.         end if
  304.  
  305. 10272 PRINT "**** RESERVED EXTENSION - REENTER ****"
  306.         BEEP
  307.  
  308. 10274 IF L9<1 THEN
  309.             PRINT "**** FILENAME TOO SHORT ****"
  310.         end if
  311.  
  312.         IF L9>12 THEN
  313.             PRINT "**** FILENAME TOO LONG ****"
  314.         end if
  315.  
  316. 10278 F9=1 'BAD FILENAME - REENTER
  317.  
  318. 10280 RETURN
  319.  
  320. 11000 PRINT "ERROR NUMBER";ERR;"AT LINE";ERL;"PLEASE NOTE"
  321.         END
  322.  
  323. 12000 I1=INSTR(G$,".")
  324.  
  325.         IF I1<>0 THEN
  326.             G$=LEFT$(G$,I1-1)
  327.         end if
  328.  
  329.       RETURN
  330. 
  331.