Télécharger chauss.eso

Retour à la liste

Numérotation des lignes :

chauss
  1. C CHAUSS SOURCE PV090527 25/01/16 21:15:01 12128
  2. SUBROUTINE CHAUSS
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. C_______________________________________________________________________
  6. C
  7. C ENT1=CHAU 'SERVEUR' ('ATTENTE' ENT4);
  8. C ENT1=CHAU 'CLIENT' MOT1;
  9. C ENT1=CHAU 'ECRITURE' LREE1 ('ECHO') ('ATTENTE' ENT4);
  10. C ENT1=CHAU 'ECRITURE' MOT2 ('ECHO') ('ATTENTE' ENT4);
  11. C ENT1 LREE2=CHAU 'LECTLIST' ENT2 ('ECHO') ('ATTENTE' ENT4);
  12. C ENT1 MOT3=CHAU 'LECTUMOT' ENT3 ('ECHO') ('ATTENTE' ENT4);
  13. C ENT1=CHAU 'FERMETURE' ('COMPLETE');
  14. C
  15. C_______________________________________________________________________
  16. C
  17. C WARNING: il doit etre possible de dialoguer avec des programmes C.
  18. C ----> tout les objets transferes sont codes en ASCII ...
  19. C ----> ... sont completer par le caractere NULL ...
  20. C ----> ... et les flottants ont un exposant sur 3 digits
  21. C_______________________________________________________________________
  22. C P.PEGON 10-12/3/93 7/9/93
  23. C-----------------------------------------------------------------------
  24. C
  25. -INC SMLREEL
  26. -INC PPARAM
  27. -INC CCOPTIO
  28.  
  29. LOGICAL LDUMM
  30. SEGMENT BUFFER
  31. CHARACTER*(L1) LBUFF=' '
  32. ENDSEGMENT
  33. POINTEUR BUFFE1.BUFFER
  34. C
  35. CHARACTER NULL,CCC*3
  36. CHARACTER*(LOCHAI) BUFF1
  37. C
  38. PARAMETER(NCLE=6)
  39. CHARACTER MCLE(NCLE)*8,NOM*72,MMCLE(1)*8,macnam*20
  40. DATA MCLE/'SERVEUR ','CLIENT ','ECRITURE','LECTLIST','LECTUMOT',
  41. > 'FERMETUR'/
  42. DATA MMCLE(1)/'COMPLETE'/
  43. DATA LDUMM/.FALSE./
  44. C
  45. NULL=CHAR(0)
  46. CALL LIRMOT(MCLE,NCLE,ICLE,1)
  47. IF(ICLE.EQ.0)RETURN
  48. C
  49. GOTO(10,20,30,40,50,60),ICLE
  50. C
  51. C OUVERTURE SERVEUR
  52. C
  53. 10 CALL OPCHAU(JECHO,IWAIT,IENT)
  54. IF(IENT.EQ.0) GOTO 100
  55. C
  56. CALL initserver(IWAIT,IENT,macnam)
  57. IF(IENT.NE.1)THEN
  58. WRITE(IOIMP,*)'Chauss: Erreur en "OUVERTURE SERVEUR"',IENT
  59. ENDIF
  60. GOTO 100
  61. C
  62. C OUVERTURE CLIENT
  63. C
  64. 20 CALL LIRCHA(NOM,1,IENT)
  65. IF(IENT.GT.0)THEN
  66. IENT=IENT+1
  67. NOM(IENT:IENT)=NULL
  68. CALL initclient(NOM(1:IENT),IENT)
  69. IF(IENT.NE.1)THEN
  70. WRITE(IOIMP,*)'Chauss: Erreur en "OUVERTURE CLIENT"'
  71. ENDIF
  72. ENDIF
  73. GOTO 100
  74. C
  75. C ECRITURE
  76. C
  77. 30 CALL LIROBJ('LISTREEL',MLREEL,0,IENT)
  78. C
  79. C 1) CAS DU LISTREEL
  80. C
  81. IF(IENT.NE.0)THEN
  82. C
  83. CALL ACTOBJ('LISTREEL',MLREEL,1)
  84. IF(IERR .NE. 0) RETURN
  85.  
  86. CALL OPCHAU(JECHO,IWAIT,IENT)
  87. IF(IENT.EQ.0) GOTO 100
  88. C
  89. L1=PROG(/1)*23
  90. SEGINI,BUFFER
  91. DO IE1=1,PROG(/1)
  92. WRITE(LBUFF((IE1-1)*23+1:IE1*23-1),'(1PE21.14,A1)')
  93. > PROG(IE1),NULL
  94. C LBUFF((IE1-1)*23+21:IE1*23)=LBUFF((IE1-1)*23+20:IE1*23-1)
  95. CCC=LBUFF((IE1-1)*23+20:IE1*23-1)
  96. LBUFF((IE1-1)*23+21:IE1*23)=CCC
  97. LBUFF((IE1-1)*23+20:(IE1-1)*23+20)='0'
  98. IF(PROG(IE1).GE.0.D0)THEN
  99. LBUFF((IE1-1)*23+1:(IE1-1)*23+1)='+'
  100. ENDIF
  101. ENDDO
  102. IF(IIMPI.EQ.1789)THEN
  103. WRITE(IOIMP,*)'Echo transmission'
  104. DO IE1=1,PROG(/1)
  105. WRITE(IOIMP,*)IE1,':',LBUFF((IE1-1)*23+1:IE1*23)
  106. ENDDO
  107. ENDIF
  108. C
  109. C 2) CAS DU MOT
  110. C
  111. ELSE
  112. C
  113. CALL LIRCHA(NOM,1,IENT)
  114. IF(IENT.EQ.0) GOTO 100
  115. C
  116. CALL OPCHAU(JECHO,IWAIT,IENT)
  117. IF(IENT.EQ.0) GOTO 100
  118. C
  119. L1=IENT+1
  120. SEGINI,BUFFER
  121. LBUFF = NOM
  122. LBUFF(L1:L1)= NULL
  123. IF(IIMPI.EQ.1789)THEN
  124. WRITE(IOIMP,*)'Echo transmission'
  125. WRITE(IOIMP,*)LBUFF(1:L1)
  126. ENDIF
  127. ENDIF
  128. C
  129. IF(JECHO.EQ.0)L1=1
  130. SEGINI,BUFFE1
  131. BUFFE1.LBUFF(L1:L1)=NULL
  132. C
  133. CALL writesocket(JECHO,IWAIT,IENT,LBUFF(/1),LBUFF,BUFFE1.LBUFF)
  134. IF(IENT.NE.1)THEN
  135. WRITE(IOIMP,*)'Chauss: Erreur en "ECRITURE"'
  136. ENDIF
  137. SEGSUP,BUFFER,BUFFE1
  138. C
  139. GOTO 100
  140. C
  141. C LECTURE D'UN LISTREEL
  142. C
  143. 40 CALL LIRENT(JG,1,IENT)
  144. IF(IENT.EQ.0)GOTO 100
  145. C
  146. CALL OPCHAU(JECHO,IWAIT,IENT)
  147. IF(IENT.EQ.0) GOTO 100
  148. C
  149. L1=JG*23
  150. SEGINI,BUFFER
  151. CALL readsocket(LBUFF,JECHO,IWAIT,IENT,LBUFF(/1))
  152. IF(IENT.NE.1)THEN
  153. WRITE(IOIMP,*)'Chauss: Erreur en "LECTURE LISTREEL"'
  154. GOTO 99
  155. ENDIF
  156. C
  157. IF(IIMPI.EQ.1789)THEN
  158. WRITE(IOIMP,*)'Echo reception'
  159. DO IE1=1,JG
  160. WRITE(IOIMP,*)IE1,':',LBUFF((IE1-1)*23+1:IE1*23)
  161. ENDDO
  162. ENDIF
  163. C
  164. SEGINI,MLREEL
  165. DO IE1=1,JG
  166. C LBUFF((IE1-1)*23+20:IE1*23-2)=LBUFF((IE1-1)*23+21:IE1*23-1)
  167. CCC=LBUFF((IE1-1)*23+21:IE1*23)
  168. LBUFF((IE1-1)*23+20:IE1*23-1)=CCC
  169. READ(LBUFF((IE1-1)*23+1:IE1*23-2),'(1PE21.14)')PROG(IE1)
  170. ENDDO
  171.  
  172. C Ecriture des resultats
  173. CALL ECROBJ('LISTREEL',MLREEL)
  174. CALL ACTOBJ('LISTREEL',MLREEL,1)
  175. SEGSUP,BUFFER
  176. C
  177. GOTO 100
  178. C
  179. C LECTURE D'UN MOT
  180. C
  181. 50 CALL LIRENT(L1,1,IENT)
  182. IF(IENT.EQ.0)GOTO 100
  183. C
  184. CALL OPCHAU(JECHO,IWAIT,IENT)
  185. IF(IENT.EQ.0) GOTO 100
  186. C
  187. L1=L1+1
  188. SEGINI,BUFFER
  189. LBUFF(L1:L1)=NULL
  190. CALL readsocket(LBUFF,JECHO,IWAIT,IENT,L1)
  191. IF(IENT.NE.1)THEN
  192. WRITE(IOIMP,*)'Chauss: Erreur en "LECTURE MOT"'
  193. GOTO 99
  194. ENDIF
  195. C
  196. IF(IIMPI.EQ.1789)THEN
  197. WRITE(IOIMP,*)'Echo reception'
  198. WRITE(IOIMP,*)LBUFF(1:L1)
  199. ENDIF
  200. C
  201. BUFF1(1:L1-1)=LBUFF(1:L1-1)
  202. CALL ECRCHA(BUFF1(1:L1-1))
  203. SEGSUP,BUFFER
  204. C
  205. GOTO 100
  206. C
  207. C FERMETURE DU PORT
  208. C
  209. 60 CALL LIRMOT(MMCLE,1,ICOMPL,0)
  210. CALL closesocket(ICOMPL,IENT)
  211. IF(IENT.NE.1)THEN
  212. WRITE(IOIMP,*)'Chauss: Erreur en "FERMETURE"'
  213. ENDIF
  214. C
  215. GOTO 100
  216. C
  217. C ERREUR LECTURE (TIME OUT ET AUTRES)
  218. C
  219. 99 CALL ECRLOG(LDUMM)
  220. C
  221. C ON SORT
  222. C
  223. 100 CALL ECRENT(IENT)
  224. RETURN
  225. END
  226.  
  227.  
  228.  

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