1  REM  ****  HP BASIC PROGRAM LIBRARY  **************************
2  REM
3  REM        DIMIS:  X-Y AXIS SEGMENT PROGRAM
4  REM
5  REM        36277  REV A  --  2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  *******************************
20  REM  *** DIMIS *** 0566 WORDS *** VERSION 1 ***
30  DIM D$[72],E$[72]
40  D$="#,SDDDDDD"
50  DEF FNA()=INT(LOG(ABS() MAX I2)/LOG(10))+I+I2
60  E$="#,DDDDDD"
70  D=I=1
80  I2=I+I
90  PRINT '10"INPUT P1(X1,Y1) AND P2(X2,Y2)";
100  INPUT X1,Y1,X2,Y2
110  D1=(X1-X2)^I2+(Y1-Y2)^I2
120  FOR A=INT(SQR(D1)) TO I2 STEP -I
130  IF D1/A^I2#INT(D1/A^I2) THEN 160
140  D=D*A
150  D1=D1/A^I2
160  NEXT A
170  PRINT "THE DISTANCE IS ";
180  IF D1 THEN 210
190  PRINT "0";
200  GOTO 290
210  IF D=I AND D1>I THEN 230
220  PRINT  USING E$[I,FNA(D)];D
230  IF D1 <= I THEN 290
240  IF D=I THEN 260
250  PRINT "*";
260  PRINT "SQR(";
270  PRINT  USING E$[I,FNA(D1)];D1
280  PRINT ")";
290  M1=(X1+X2)/(((X1+X2)/I2=INT((X1+X2)/I2))+I)
300  M2=(Y1+Y2)/(((Y1+Y2)/I2=INT((Y1+Y2)/I2))+I)
310  PRINT '13'10"THE MIDPOINT IS P(";
320  PRINT  USING D$[I,FNA(M1)+I];M1
330  IF M1#X1+X2 OR  NOT M1 THEN 350
340  PRINT "/2";
350  PRINT ",";
360  PRINT  USING D$[I,FNA(M2)+I];M2
370  IF M2#Y1+Y2 OR  NOT M2 THEN 390
380  PRINT "/2";
390  PRINT ")"
400  S1=ABS(Y2-Y1)*SGN((Y2-Y1)*(X2-X1))
410  S2=ABS(X2-X1)
420  PRINT "THE SLOPE IS ";
430  IF S2 THEN 460
440  PRINT "UNDEFINED"
450  GOTO 70
460  FOR B=S2 TO I2 STEP -I
470  IF S1/B#INT(S1/B) OR S2/B#INT(S2/B) THEN 510
480  S1=S1/B
490  S2=S2/B
500  IF S2=I THEN 520
510  NEXT B
520  PRINT  USING D$[I,FNA(S1)+I];S1
530  IF S2<I2 THEN 560
540  PRINT "/";
550  PRINT  USING E$[I,FNA(S2)];S2
560  PRINT 
570  GOTO 70
580  END 
