C
C C FILENAMES: CHARACTER*80 FILE2 C C LOGICAL UNIT NUMBERS: INTEGER LU2 PARAMETER (LU2=2) C C ARRAY DIMENSIONS: INTEGER MLE,MH,MSPINE PARAMETER (MLE=600,MH=MLE**2+1,MSPINE=MLE*(MLE+1)/2) C INTEGER ISP1(MSPINE),ISP2(MSPINE),ISP3(MSPINE) C C....................................................................... C NH=27 FILE2='NET.FS' WRITE(*,'(A)') * '+ENTER MAXIMUM F.S. SIZE (27), AND F.S. FILENAME (''NET.FS''): ' READ(*,*) NH,FILE2 NH=NH*NH+2 IF(NH.GT.MH) THEN STOP 'ERROR: TOO LARGE FORWARD STAR.' END IF OPEN(LU2,FILE=FILE2) C DH=1./SQRT(12.*FLOAT(NH)) DH=DH/2. NFS=1 NSPINE=0 DO 69 IH=1,NH DO 58 I1=INT(SQRT(FLOAT(IH)/3.)-DH+1.),INT(SQRT(FLOAT(IH))+DH) I=IH-I1*I1 DO 57 I2=INT(SQRT(FLOAT(I)/2.)-DH+1.), * MIN0(INT(SQRT(FLOAT(I))+DH),I1) I3I3=I-I2*I2 I3=INT(SQRT(FLOAT(I3I3))+0.500) IF(I3*I3.EQ.I3I3.AND.I3.LE.I2) THEN DO 10 J=2,I1 IF(MOD(I1,J).EQ.0.AND.MOD(I2,J).EQ.0 * .AND.MOD(I3,J).EQ.0) THEN GO TO 56 END IF 10 CONTINUE C C NEW SPINE NSPINE=NSPINE+1 IF(NSPINE.GT.MSPINE) THEN STOP 'ERROR: TOO MANY SPINES.' END IF ISP1(NSPINE)=I3 ISP2(NSPINE)=I2 ISP3(NSPINE)=I1 C 56 CONTINUE END IF 57 CONTINUE 58 CONTINUE C IF(IH.EQ.NFS*NFS+2) THEN WRITE(*,'(A,I7,2I8)') '+',NFS,NSPINE WRITE(LU2,'(I3,I6,I7,E13.6)') NFS,NSPINE WRITE(LU2,'(8(3I3,1X))') (ISP1(I),ISP2(I),ISP3(I),I=1,NSPINE) NFS=NFS+1 END IF 69 CONTINUE WRITE(LU2,'(I3,I6,I7,E13.6)') 0,0 C STOP END C C======================================================================= C C