Télécharger ztacmz.eso

Retour à la liste

Numérotation des lignes :

ztacmz
  1. C ZTACMZ SOURCE CHAT 05/01/13 04:24:59 5004
  2. SUBROUTINE ZTACMZ (M,N,Q)
  3. C
  4. C M=1
  5. C Q CARACTERES A TRANSMETTRE
  6. C N A PARTIR DU N IEME
  7. C
  8. C M=2
  9. C N.GT.0
  10. C Q DIMENSIONS DU GRAPHIQUE (Q1,Q2)
  11. C A SORTIR SUR UNITE LOGIQUE N
  12. C N.LE.0
  13. C FIN DE GRAPHIQUE
  14. C
  15. C M=3
  16. C Q COORDONNEES DEBUT (Q1,Q2) ET FIN (Q3,Q4) D'UN TRAIT
  17. C N 0 PLUME HAUTE CARACTERE EN FIN DE TRAIT
  18. C 1 PLUME BASSE PAS DE CARACTERE
  19. C 2 PLUME BASSE CARACTERE EN FIN DE TRAIT
  20. C
  21. C M=4
  22. C Q COORDONNEES DEBUT (Q1,Q2) ET FIN (Q3,Q4) D'UN TEXTE
  23. C N NOMBRE DE CARACTERE + 256*NUMERO D ALPHABET
  24. C
  25. C M=6
  26. C Q SANS SIGNIFICATION
  27. C N CARACTERISTIQUE HARDWARE DE TRACE (VOIR TAHRD)
  28. C
  29. C M=8 TRACE HARDWARE D'ELEMENTS CIRCULAIRES
  30. C Q COORDONNEES DU CENTRE DU CERCLE (Q1,Q2) ET RAYON (Q3=Q4)
  31. C N CODE D'INTERPRETATION DES COORDONNEES
  32. C
  33. C M=9 COLORATION D'AIRE
  34. C Q SANS SIGNIFICATION AU PREMIER APPEL D'UN CONTOUR
  35. C PUIS COORDONNEES DES SOMMETS DANS (Q1,Q2) ENSUITE
  36. C N 0 - DEBUT D'AIRE , -1 - CONTOUR , 1 - FIN D'AIRE
  37. C
  38. C M=10
  39. C Q SANS SIGNIFICATION
  40. C N CARACTERISTIQUES HARDWARE DE COLORATION (VOIR TAHRDR)
  41. C-----------------------------------------------------------------------
  42. IMPLICIT INTEGER(I-N)
  43. DIMENSION Q(4)
  44. DIMENSION I1(2),I2(2),M1(2),IP(2),MP(2)
  45. C
  46. C AP2 2**20-1
  47. C IP2 2**19+1
  48. C NI NOMBRE DE CODES OPERATION DU LGI + 2**8 + 1
  49. C ANI FLOAT(NI)
  50. C LE NOMBRE DE CODES OP. DE L'ACTUEL LGI EST 12 (CODE DE 1 A 12)
  51. C
  52. COMMON /CLGI/L6C
  53. CHARACTER*64 L6C
  54. CHARACTER*27 L7C
  55. CHARACTER*200 CHBUF
  56. * SAVE NP
  57. SAVE
  58. DATA L7C/':abcdefghijklmnopqrstuvwxyz'/
  59. C
  60. DATA AP2,IP2,NI,ANI /1048575.,524289,269,269./
  61. C
  62. DATA ILL/0/
  63. C-----------------------------------------------------------------------
  64. DATA NCM / 8/
  65. C
  66. C WRITE (6,*) ' ZTACMZ ',M,N,Q(1),Q(2),Q(3),Q(4)
  67. C
  68. NCMM2=NCM-2
  69. C
  70. M1(1)=M+256
  71. C
  72. IF (M.GT.12) RETURN
  73. C 1 2 3 4 5 6 7 8 9 10 11 12
  74. GO TO (100,200,300,400,100,600,100,800,900,1000,100,100), M
  75. C
  76. 100 CONTINUE
  77. WRITE(CHBUF,FMT='(50A4)') (Q(I),I=N,N+(NP-1)/4)
  78. DO 140 J1=1,NP,6
  79. II=0
  80. DO 130 J=J1,J1+5,3
  81. JJ=0
  82. DO 110 K=1,3
  83. ICR=INDEX(L6C,CHBUF(J+K-1:J+K-1))
  84. IF (ICR.EQ.0) ICR=INDEX(L7C,CHBUF(J+K-1:J+K-1))
  85. ILL=MAX0(0,ICR-1)
  86. JJ=64*JJ+ILL
  87. 110 CONTINUE
  88. II=II+1
  89. I1(II)=JJ*2+IP2
  90. 130 CONTINUE
  91. CALL ZTAOUZ (0,I1)
  92. 140 CONTINUE
  93. GO TO 10000
  94. C
  95. 200 CONTINUE
  96. M1(2)=NI*2+IP2
  97. MP(1)=M1(1)
  98. MP(2)=M1(2)
  99. CALL ZTAOUZ (N,M1)
  100. IF (N.GT.0) THEN
  101. Q1=AINT(Q(1)+0.99999)
  102. Q2=AINT(Q(2)+0.99999)
  103. DCX=(AP2-ANI)/Q1
  104. DCY=(AP2-ANI)/Q2
  105. I2(1)=INT(Q1*Q(3))*2+IP2
  106. I2(2)=INT(Q2*Q(4))*2+IP2
  107. CALL ZTAOUZ (0,I2)
  108. ENDIF
  109. GO TO 10000
  110. 300 CONTINUE
  111. M1(2)=N*2+IP2
  112. I1(1)=INT(DCX*Q(1))+NI
  113. I1(2)=INT(DCY*Q(2))+NI
  114. I2(1)=INT(DCX*Q(3))+NI
  115. I2(2)=INT(DCY*Q(4))+NI
  116. IF (M1(1).NE.MP(1)) GO TO 310
  117. IF (M1(2).NE.MP(2)) GO TO 310
  118. IF (N.EQ.0) GO TO 320
  119. IF (I1(1).NE.IP(1)) GO TO 310
  120. IF (I1(2).NE.IP(2)) GO TO 310
  121. IF (I1(1).NE.I2(1)) GO TO 320
  122. IF (I1(2).NE.I2(2)) GO TO 320
  123. GO TO 330
  124. 310 CONTINUE
  125. CALL ZTAOUZ (0,M1)
  126. CALL ZTAOUZ (0,I1)
  127. 320 CONTINUE
  128. CALL ZTAOUZ (0,I2)
  129. MP(1)=M1(1)
  130. MP(2)=M1(2)
  131. 330 CONTINUE
  132. IP(1)=I2(1)
  133. IP(2)=I2(2)
  134. GO TO 10000
  135. 400 CONTINUE
  136. M1(2)=N*2+IP2
  137. I1(1)=INT(DCX*Q(1))+NI
  138. I1(2)=INT(DCY*Q(2))+NI
  139. I2(1)=INT(DCX*Q(3))+NI
  140. I2(2)=INT(DCY*Q(4))+NI
  141. CALL ZTAOUZ (0,M1)
  142. CALL ZTAOUZ (0,I1)
  143. CALL ZTAOUZ (0,I2)
  144. MP(1)=M1(1)
  145. MP(2)=M1(2)
  146. NP=MOD(N,256)
  147. GO TO 10000
  148. 600 CONTINUE
  149. 700 CONTINUE
  150. M1(2)=N*2+IP2
  151. CALL ZTAOUZ (0,M1)
  152. GO TO 10000
  153. 800 CONTINUE
  154. IF (N.LT.0) GO TO 810
  155. C CREATION DE LA PREMIERE INSTRUCTION
  156. M1(2)=N*2+IP2
  157. MP(1)=M1(1)
  158. MP(2)=M1(2)
  159. CALL ZTAOUZ (0,M1)
  160. C CREATION DE LA DEUXIEME INSTRUCTION
  161. C DOMAINE D'INTERPRETATION EN X ET Y
  162. Q1=AINT(Q(1)+0.99999)
  163. Q2=AINT(Q(2)+0.99999)
  164. COFX=(AP2-ANI)/Q1
  165. COFY=(AP2-ANI)/Q2
  166. I1(1)=INT(Q1)*2+IP2
  167. I1(2)=INT(Q2)*2+IP2
  168. CALL ZTAOUZ (0,I1)
  169. C CREATION DE LA TROISIEME INSTRUCTION
  170. C CENTRE DU CERCLE EN X ET Y
  171. I1(1)=INT(COFX*Q(1))+NI
  172. I1(2)=INT(COFY*Q(2))+NI
  173. CALL ZTAOUZ (0,I1)
  174. C CREATION DE LA QUATRIEME INSTRUCTION
  175. C RAYON DU CERCLE
  176. Q2=AINT(Q(3)+0.99999)
  177. COF=(AP2-ANI)/Q2
  178. I2(1)=INT(Q2)*2+IP2
  179. I2(2)=INT(COF*Q(4))+NI
  180. CALL ZTAOUZ (0,I2)
  181. C INITIALISATION DU COEF DE CODAGE POUR LA
  182. C CREATION DE(S) INSTRUCTION(S) DE TYPE 5
  183. Q1=7.
  184. COF=(AP2-ANI)/Q1
  185. GO TO 10000
  186. 810 CONTINUE
  187. C CREATION DE(S) INSTRUCTION(S) DE TYPE 5
  188. I1(1)=INT(COF*Q(1))+NI
  189. I1(2)=INT(COF*Q(2))+NI
  190. CALL ZTAOUZ (0,I1)
  191. GO TO 10000
  192. 900 CONTINUE
  193. IF (N.LT.0) GO TO 910
  194. M1(2)=N*2+IP2
  195. MP(1)=M1(1)
  196. MP(2)=M1(2)
  197. CALL ZTAOUZ (0,M1)
  198. GO TO 10000
  199. 910 CONTINUE
  200. I1(1)=INT(DCX*Q(1))+NI
  201. I1(2)=INT(DCY*Q(2))+NI
  202. CALL ZTAOUZ (0,I1)
  203. GO TO 10000
  204. 1000 CONTINUE
  205. M1(2)=N*2+IP2
  206. MP(1)=M1(1)
  207. MP(2)=M1(2)
  208. CALL ZTAOUZ (0,M1)
  209. GO TO 10000
  210. 10000 CONTINUE
  211. RETURN
  212. END
  213.  
  214.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales