      SUBROUTINE STRAX3 ( AGAIN)
C
      INTEGER IFORCE(25), ISTRES(100), ELEMID, IBLOCK(22,14)
     1,       ICLOCK(22,14),CANGLE
      REAL    SAVEF(75), SAVES(75)
C
      LOGICAL AGAIN
C
      COMMON /SDR2X7/ DUM(100),STRESS(100),FORCE(25)
     1,               SKIP(25),BLOCK(22,14),CLOCK(22,14)
C
C SCRATCH BLOCK
      COMMON  /SDR2X8/
     U                 DISP(9), EFORC(9), ESTRES(9)
     3,                HARM, N, SINPHI, CONPHI, NPHI, NANGLE
     3,                ELEMID, UNU(123), NELHAR
C
      COMMON /ISAVE / ISAVEF(75),ISAVES(75)
C
      COMMON /SDR2DE/ DUM5(33), IPART
C
      COMMON /SDR2X4/ DUM4(51),KTYPE
C
      EQUIVALENCE ( ISTRES(1), STRESS(1)), ( IFORCE(1), FORCE(1))
     1, (IBLOCK(1,1), BLOCK(1,1)), (ICLOCK(1,1),CLOCK(1,1))
     2, (ISAVEF(1),SAVEF(1)),(ISAVES(1),SAVES(1))
     3, (NANGLE,CANGLE)
C
      IF ( AGAIN ) GO TO 10
      AGAIN = .TRUE.
      NANGLE = 0
   10 NANGLE = NANGLE + 1
C
C
C  BRANCH TO INSERT STRESSES AND FORCES INTO FORCE AND STRESS OR
C                                            SAVEF AND SAVES
C
C    KTYPE=1 - REAL OUTPUT FROM BLOCK IS TRANSFERED TO CLOCK, THEN
C            STORED IN FORCE AND STRESS, NOTHING IN SAVEF AND SAVES
C    KTYPE=2 - COMPLEX OUTPUT
C    IPART=1 - IMAGINARY PART OF COMPLEX OUTPUT FROM BLOCK, STORED
C              IN SAVEF AND SAVES
C    IPART=2 - REAL PART OF COMPLEX OUTPUT FROM CLOCK STORED IN
C              FORCE AND STRESS
C
      IF (KTYPE.EQ.2) GO TO 19
      DO 15 I=1,22
      DO 15 J=1,14
   15 CLOCK(I,J) = BLOCK(I,J)
   19 CONTINUE
C
C  OUTPUT FORCES FOR THIS ANGLE
C
      IFORCE(1)=ELEMID
      FORCE(2) = CLOCK(1,CANGLE)
      J = 2
      DO 20 I=1,9
      J = J + 1
      FORCE(J) = CLOCK(I+7,CANGLE)
C
C  OUTPUT CHARGES
      IF((I.NE.3).AND.(I.NE.6).AND.(I.NE.9)) GO TO 20
      J = J + 1
      K=19+I/3
      FORCE(J) = CLOCK(K,CANGLE)
   20 CONTINUE
C
C OUTPUT STRESSES
      ISTRES  (1) = ELEMID
      STRESS(2) = CLOCK(1,CANGLE)
      DO 30 I = 1, 6
      STRESS(2+I) = CLOCK(I+1,CANGLE)
   30 CONTINUE
C
C  OUTPUT FLUXES
      DO 32 I=1,3
   32 STRESS(I+8) = CLOCK(I+16,CANGLE)
C
      IF(KTYPE.EQ.2) GO TO 40
      IF(CANGLE .EQ. 14) GO TO 100
      IF(ICLOCK(1,CANGLE+1) .EQ. 1) GO TO 100
      GO TO 90
C
   40 CONTINUE
C
C  OUTPUT FORCES FOR THIS ANGLE
C
      ISAVEF(1)=ELEMID
      SAVEF(2) = BLOCK (1,NANGLE)
      J = 2
      DO 50 I=1,9
      J = J + 1
      SAVEF(J) = BLOCK(I+7,NANGLE)
C
C  OUTPUT CHARGES
      IF((I.NE.3).AND.(I.NE.6).AND.(I.NE.9)) GO TO 50
      J = J + 1
      K=19+I/3
      SAVEF(J) = BLOCK(K,NANGLE)
   50 CONTINUE
C
C OUTPUT STRESSES
      ISAVES(1) = ELEMID
      SAVES(2) = BLOCK (1, NANGLE)
      DO 60 I=1,6
      SAVES(2+I) = BLOCK ( I+1,NANGLE)
   60 CONTINUE
C
C  OUTPUT FLUXES
      DO 70 I=1,3
   70 SAVES(I+8) = BLOCK(I+16,NANGLE)
C
      IF (NANGLE .EQ. 14) GO TO 100
      IF (IBLOCK (1,NANGLE+1) .EQ. 1)  GO TO 100
   90 CONTINUE
C
      RETURN
  100 AGAIN = .FALSE.
      RETURN
      END
