C GETCHA.FTN C C A SUBROUTINE TO GET CHANGES FOR THE PROGRAM LABIN C SUBROUTINE GETCHA(BUF,DAY, NLIST) BYTE BUF(84),DEL(3) BYTE CHAR INTEGER OLDX,OLDY,X,Y,DAY INTEGER MINX(2) ! MINIMUM X FOR EACH LINE INTEGER LTYPE ! LINE TYPE (1 OR 2) INTEGER DAYS,BUFPOS ! SUBROUTINE TO GET DAY DATA MINX/5,30/ DATA DEL/"10,"40,"10/ ! CHARACTERS NEEDED FOR DELETION CALL CUR(19,1) WRITE(5,250) 250 FORMAT(' Use arrows and carriage return to get to text 1 needing changing.',/,' Hit Control Q to quit leaving 2 current day as last contact.',/,' hit Control X to quit 3 leaving original day as last contact.',/,' The delete key 4 now works.') X=5 Y=1 CALL CUR(5,5) 300 CALL UPDN(CHAR) ! GET CHARACTER IF(CHAR.EQ."15)GO TO 350 ! CR WAS HIT IF(CHAR.LE.26)GO TO 400 ! WANT TO QUIT IF(CHAR.EQ."177)GO TO 360 ! DELETE KEY WAS HIT IF(CHAR.GT."37)GO TO 320 ! NOT AN ARROW OLDX=X OLDY=Y IF(CHAR.EQ."36)X=X+1 IF(CHAR.EQ."37)X=X-1 IF(CHAR.EQ."34)Y=Y-1 ! UP ARROW HIT IF(CHAR.EQ."35)Y=Y+1 ! DOWN ARROW HIT CALL POSCK(OLDX,OLDY,X,Y, NLIST)! SEE IF POSITION O.K. GO TO 300 C C C GOOD CHAR WAS HIT C SEE WHAT CHAR IN BUF HAS TO BE REPLACED 320 IF((Y.GT.1).AND.(CHAR.GT."140))CHAR=CHAR-"40 ! SMALL TO CAPITAL BUF(BUFPOS(X,Y))=CHAR ! PLACE CHARACTER IN PROPER POSITION CALL PUT(CHAR,1) ! WRITE CHAR BACK TO SCREEN X=X+1 OLDX=X OLDY=Y CALL POSCK(OLDX,OLDY,X,Y, NLIST) GO TO 300 C C CR WAS HIT C 350 OLDX=X OLDY=Y Y=Y+1 X=1 CALL POSCK(OLDX,OLDY,X,Y, NLIST) GO TO 300 C C DELETE KEY WAS HIT C 360 LTYPE=1 IF(Y.GT.1)LTYPE=2 IF(X.LE.MINX(LTYPE))GO TO 300 ! ON LEFT EDGE X=X-1 BUF(BUFPOS(X,Y))="40 CALL PUT(DEL,3) GO TO 300 C C WANT TO QUIT C 400 IF(CHAR.GT.20)GO TO 500 ! GOING TO LEAVE OLD DATE DAY=DAYS(I,J,K,1) ! REPLACE OLD DAY WITH PRESENT DAY 500 CALL CUR(15,1) CALL ERASR CALL CUR(20,1) RETURN END