C ADDNAM.FTN C C THIS PROGRAM IS USED TO ADD, DELETE, OR CHANGE A NAME C ON THE FILE CHECK.DAT C IT CAN ALSO BE USED TO ENTER THE DATES FOR COMING HOLIDAYS, LIST C THE DAYS OF HOLIDAYS ALREADY ENTERED,ENTER THE LENGTH OF LUNCH C PERIOD FOR ANY EMPLOYEE, LIST THE NAME OF EACH EMPLOYEE AND THE C LENGTH OF HIS LUNCH PERIOD, AND CHANGE THE DAY FOR BEGINNING OF C THE PAY PERIOD. C BYTE BINFO(160), BDATE(2), BNAME(30) INTEGER INFO(54) INTEGER CODE, OPT, REC EQUIVALENCE (INFO(1),BINFO(1)) OPEN (UNIT=1, NAME='CHECK.DAT', ACCESS='DIRECT' 1, RECORDSIZE=40,TYPE='OLD', SHARED) 110 WRITE(5,120) 120 FORMAT(' ENTER 1 FOR ADD, 2 FOR DELETE OR 3 TO CHANGE A NAME',/, 1' 4 TO ENTER THE HOLIDAYS FOR THE YEAR, 5 TO LIST THE HOLIDAYS',/, 2' 6 READ THE NAMES AND LENGTH OF LUNCH TIME',/, 3'$7 CHANGE THE DAY FOR BEGINNING OF PAY PERIOD ') READ(5,10) OPT 10 FORMAT(I5) IF ((OPT .LT. 1) .OR. (OPT .GT. 7))GO TO 1000 IF(OPT.EQ.4)GO TO 500 IF(OPT.EQ.5)GO TO 550 IF(OPT.EQ.6)GO TO 600 IF(OPT.EQ.7) GO TO 650 135 WRITE(5,140) 140 FORMAT(/'$Enter the persons numerical code ') READ(5,150) CODE IF (CODE .LE. 0) GO TO 1000 READ(1'1) BINFO 150 FORMAT(I2) IF (OPT .GE. 2) GO TO 400 !DELETE OR CHANGE OPTION C C ADD A NAME C WRITE(5,160) 160 FORMAT('$ENTER THE EMPLOYEE`S NAME ') READ(5,170) BNAME 170 FORMAT(30A1) DO 260 I=1,56 260 IF (BINFO(I) .EQ. CODE) GO TO 270 GO TO 350 ! IF GET HERE, THIS CODE NOT USED. 270 WRITE(5,280) 280 FORMAT(1X,'THIS CODE HAS ALREADY BEEN ASSIGNED TO SOME ONE') GO TO 135 350 DO 370 I=1,56 370 IF (BINFO(I) .EQ. 0) GO TO 380 WRITE(5,360) 360 FORMAT(1X,'YOU HAVE NO ROOM ON FILE, MUST DELETE SOME ONE') GO TO 110 380 BINFO(I)=CODE ! STORE THE PERSON'S CODE WRITE(1'1) BINFO CALL LOA(BINFO,96,0) ! CLEAR EVERYTHING TO 0 CALL SCOPY(BNAME,BINFO,30,1,15) ! MOVE NAME TO BINFO WRITE(5,385) 385 FORMAT('$Enter the number of minutes in your lunch period. ') READ(5,10)INFO(7) WRITE(1'I+2) BINFO CALL LOA(BINFO,96,0) ! CLEAR THE ARRAY AGAIN INFO(2)=I ! STORE SEQUENCE NO. OF PERSON DO 390 J=I*4+55,I*4+58 WRITE(1'J) BINFO 390 CONTINUE GO TO 135 C C DELETE OR CHANGE A NAME C 400 DO 405 I=1,56 405 IF (BINFO(I) .EQ. CODE) GO TO 420 WRITE(5,410) 410 FORMAT(1X,'**** EMPLOYEE NUMBER NOT ON FILE ****') GO TO 135 420 IF (OPT .EQ. 3) GO TO 450 ! WANT TO CHANGE NAME BINFO(I)=0 WRITE(1'1)BINFO GO TO 135 C C CHANGE THE NAME C 450 READ(1'I+2)BINGO CALL LOA(BINFO,96,0) BINFO(1)=I+58 WRITE(5,160) ! ASK FOR PERSON'S NAME READ(5,170)BNAME CALL SCOPY(BNAME,BINFO,30,1,15) ! MOVE NAME WRITE(5,385) READ(5,10)INFO(7) WRITE(1'I+2)BINFO GO TO 135 ! GO BACK AND GET ANOTHER C C ENTER THE HOLIDAYS FOR THE YEAR. C 500 I=1 ! OFFSET FOR FIRST HOLIDAY WRITE(5,505) 505 FORMAT('0THE FOLLOWING PROCEDURE WILL WIPE OUT ALL HOLIDAYS THAT 1 HAVE BEEN STORED.',/,' BE SURE TO ENTER NEW YEARS DAY FOR THE 2 NEXT YEAR.',/,' IF YOU WANT TO QUIT, ENTER ANY NUMBER, OTHERWISE 3, JUST HIT ENTER.') READ(5,10)J IF(J.NE.0)GO TO 1000 WRITE(5,10) 510 WRITE(5,520) 520 FORMAT('$ENTER THE DAY FOR THIS HOLIDAY ') CALL INDAY(INFO(I)) IF(INFO(I).EQ.0)GO TO 530 ! THEY ARE THROUGH I=I+1 GO TO 510 530 WRITE(1'2)INFO ! STORE THE HOLIDAYS GO TO 1000 C C LIST THE HOLIDAYS THAT HAVE BEEN STORED. C 550 I=1 READ(1'2)INFO 560 IF(INFO(I).EQ.0)GO TO 1000 CALL DATODA(MO,J,K,INFO(I),3) WRITE(5,570)MO,J,K 570 FORMAT(3I3) I=I+1 GO TO 560 C C LIST NAMES AND LUNCH PERIOD C 600 WRITE(5,610) 610 FORMAT(' LUNCH PERIOD NAME ') DO 630 REC=3,58 READ(1'REC)INFO IF(BINFO(15).LE."40)GO TO 1000 ! ASSUME THIS IS THE END WRITE(5,620)INFO(7),(BINFO(K),K=15,44) 620 FORMAT(I5,2X,30A1) 630 CONTINUE GO TO 1000 C C CHANGE THE BEGINNING OF THE PAY PERIOD C 650 READ(1'1)INFO CALL DATODA(MO, J, K, INFO(48),3) WRITE(5,660)MO,J,K 660 FORMAT(' THE CURRENT DAY FOR BEGINNING OF PAY PERIOD IS',3I3,/, 1' HIT RETURN TO LEAVE AS IS, OR ENTER THE NEW DAY TO CHANGE ',/, 2'$(THE DAY YOU ENTER MUST BE A SUNDAY, ENTER AS MO,DAY,YR) ') CALL INDAY(I) IF(I.EQ.0) GO TO 1000 INFO(48)=I WRITE(1'1)INFO GO TO 1000 1000 CLOSE(UNIT=1) CALL EXIT END