Download pfmors.eso

Back to the list

   1 : C PFMORS    SOURCE    MAGN      09/07/30    21:19:46     6458           
   2 :       SUBROUTINE PFMORS(ASSTAB,MATRIK,LL)
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : C     ******************************************
   6 : C     * Subroutine calculant le profil morse   *
   7 : C     * a partir de ASSTAB                     *
   8 : C     * Entree /Sortie : MATRIK                *
   9 : C     * Sortie : ASSTAB                        *
  10 : C     ******************************************
  11 : 
  12 : -INC SMMATRIK
  13 : 
  14 :       SEGMENT ASSTAB
  15 :       INTEGER ITAB(NBCOMP,NTA)
  16 :       ENDSEGMENT
  17 : 
  18 :       INTEGER DUA,PRI,MAXDUA,MAXPRI
  19 : 
  20 :       SEGACT MATRIK*MOD
  21 :       SEGACT ASSTAB
  22 : 
  23 :       NBCOMP=ITAB(/1)
  24 :       NTA=ITAB(/2)
  25 : 
  26 :       MINCP=KMINCP
  27 :       MINCD=KMINCD
  28 : 
  29 :       SEGACT MINCP,MINCD
  30 :       NPTP=MINCP.MPOS(/1)
  31 :       NPTD=MINCD.MPOS(/1)
  32 :       NBIP=MINCP.MPOS(/2)-1
  33 :       NBID=MINCD.MPOS(/2)-1
  34 : 
  35 :       NTT=NPTD
  36 :       NJA=NPTP
  37 : C     On initialise le segment PMORS
  38 :       SEGINI PMORS
  39 : 
  40 :       M=0
  41 :       MAXPRI=0
  42 :       MAXDUA=0
  43 : 
  44 : 
  45 :       DO I=1,NTA
  46 :          NB=ITAB(1,I)
  47 :          NINCD=MINCD.NPOS(I+1)-MINCD.NPOS(I)
  48 :          
  49 : c         WRITE(6,*) 'NINCD',NINCD
  50 :          LLL=0
  51 :          DO L=1,NINCD
  52 :             LLL=LLL+1
  53 :  300        CONTINUE
  54 :             IF (MINCD.MPOS(I,LLL).EQ.0) THEN
  55 :                LLL=LLL+1
  56 :                GOTO 300
  57 :             END IF
  58 :             DUA=MINCD.NPOS(I)+MINCD.MPOS(I,LLL)-1
  59 :             MAXDUA=MAX(DUA,MAXDUA)
  60 :             
  61 :  100        CONTINUE
  62 :             IF (NTT.LT.DUA) THEN
  63 :                NTT=NTT+100
  64 :                SEGADJ PMORS
  65 :                GOTO 100
  66 :             END IF
  67 : c            WRITE(6,*) 'DUA',DUA,'M',M
  68 :             IA(DUA)=M+1
  69 : c            WRITE(6,*) 'NB', NB
  70 :             
  71 :             DO J=1,NB
  72 : c               WRITE(6,*) 'J',J,'I',I
  73 :                PRI=ITAB(J+1,I)
  74 : c               WRITE(6,*) 'PRI',PRI,'NINCP',MINCP.NPOS(PRI+1)-
  75 : c     &              MINCP.NPOS(PRI)
  76 :                NINCP=MINCP.NPOS(PRI+1)-MINCP.NPOS(PRI)
  77 : 
  78 :                KK=0
  79 :                DO K=1,NINCP
  80 :                   KK=KK+1
  81 :                   PRI=ITAB(J+1,I)    
  82 :                   M=M+1
  83 : c                  WRITE(6,*) 'M',M
  84 :  200              CONTINUE
  85 :                   IF (NJA.LT.M) THEN
  86 :                      NJA=NJA+100
  87 :                      SEGADJ PMORS
  88 :                      GOTO 200
  89 :                   END IF
  90 : c                  WRITE(6,*) 'PRI',PRI,'MINCP.NPOS(PRI)',
  91 : c     &                 MINCP.NPOS(PRI),
  92 : c     &               'MINCP.MPOS(PRI,K)',MINCP.MPOS(PRI,K)  
  93 :  350              CONTINUE
  94 :                   IF (MINCP.MPOS(PRI,KK).EQ.0) THEN
  95 :                      KK=KK+1
  96 :                      GOTO 350
  97 :                   END IF
  98 : 
  99 :                   PRI=MINCP.NPOS(PRI)+MINCP.MPOS(PRI,KK)-1
 100 : c                  WRITE(6,*) 'M',M,'PRI',PRI
 101 :                   MAXPRI=MAX(MAXPRI,PRI)
 102 :                   JA(M)=PRI
 103 :                END DO
 104 :             END DO
 105 :          END DO
 106 :       END DO
 107 : 
 108 : 
 109 :       NTT=MAXDUA
 110 :       NJA=M
 111 : 
 112 :       SEGADJ PMORS
 113 : C     On oublie pas le dernier
 114 :       IA(MAXDUA+1)=M+1
 115 : 
 116 :       SEGDES PMORS
 117 :       SEGDES MINCP,MINCD
 118 :       SEGSUP ASSTAB
 119 : 
 120 :       IRIGEL(5,LL)=PMORS
 121 :       KNTTP=MAXPRI
 122 :       KNTTD=MAXDUA
 123 :       SEGDES MATRIK
 124 :       RETURN
 125 : 
 126 :       END
 127 :  
 128 :  
 129 :  

© Cast3M 2003 - All rights reserved.
Disclaimer