Télécharger ktrini.eso

Retour à la liste

Numérotation des lignes :

ktrini
  1. C KTRINI SOURCE CB215821 20/08/04 21:15:05 10680
  2. SUBROUTINE KTRINI(NOL,AXAX,AYAY,TITRE,HAUTT,VALEU,NCOUMA)
  3. C
  4. C INITIALISATION D'UN TRACE
  5. C 1 TATB 2 TEKTRO 3 GDDM (3179 G )
  6. C 4 GKS 5 GDDM (FICHIER GDF)
  7. C
  8. C ATTENTION AVEC LE GKS IBM IL PEUT Y AVOIR UN PROBLEME EN CAS
  9. C D'UNDERFLOW QUI NE SONT PAS ACTUELLEMENT MASQUES PAR GKS
  10. C ET PROVOQUE DES ARITHMETICS ERRORS
  11. C
  12. C INITIALISATION D'UN TRACE
  13. C NOL : NON UTILISE
  14. C AX ,AYAX : DIMENSION POUR LA FEUILLE DE PAPIER
  15. C TITRE : TITRE (CHAINE DE CARACTERES)
  16. C HAUT : HAUTEUR DES CARACTERES
  17. C VALEUR : ECRAN OU ECRAN PLUS MARGE
  18. C NCOUMA : NOMBRE DE COULEUR DU TERMINAL
  19. C ICCOL : INDICE COULEUR COURANTE
  20. C ICOISO :
  21. C
  22. IMPLICIT INTEGER(I-N)
  23. external long
  24. SAVE IWKIDLI,KMETA,WKTY,INWISS,INMETA,FENE
  25. SAVE ICCOL,ICOISI,WKID,X1,X2,Y1,Y2,WRATIO,INUSEG
  26. SAVE XINID,YINID,IDSG,SXMIN,SXXAX,SYMIN,SYYAX,RX,RY,AX,AY
  27. SAVE TEXTX,TEXTY,INCOOR,TEXTE,ICCLE,IACT,IDWISS,IWISS,VALEUR
  28. SAVE NHAUT,HAUT
  29. SAVE IPF
  30. DIMENSION IPF(24)
  31. CHARACTER*(*) TITRE
  32. DIMENSION XTR(*),YTR(*)
  33. DIMENSION RMAT(9)
  34. REAL SEGTM(2,3)
  35. CHARACTER*8 NAME
  36. CHARACTER*(*) CARACT
  37. LOGICAL VALEUR,FENET,VALEU,FENE
  38. CHARACTER*(500) LEGEND
  39. C VALEURS POUR LES ENTRY
  40. CHARACTER*20 STRING
  41. DIMENSION SEGT(6),SEGMT(6),ROUT(6)
  42. C MEMOIRES DES POINTS COINS DES PAVES DE COULEUR DES MENUS
  43. DIMENSION PXA(4),PYA(4)
  44. C CORRESPONDING CERN COLOR INDICES - FOR CERN PURPOSE
  45. DIMENSION ICCC(10)
  46. C
  47. DIMENSION TEXTX(50),TEXTY(50)
  48. C VARIABLES CARACTERES POUR NOMMER LE FICHIER METAFILE
  49. CHARACTER*1 CARELE(10)
  50. CHARACTER*6 STR
  51. CHARACTER*4 STR1
  52. C
  53. CHARACTER*15 TEXTE(50)
  54. C
  55. C
  56. C ASF
  57. DIMENSION IASF(13)
  58. C INITIALISATION GKS (IDENTIFICATEUR, CONNECTION, TYPE)
  59. INTEGER WKID,WKCON,WKTY
  60. INTEGER STAT
  61. C
  62. *
  63. -INC PPARAM
  64. -INC CCOPTIO
  65. *-INC CCGEOME
  66. DATA ICCOUN/0/
  67. C DATA POUR LE NOM DU FICHIER METAFILE
  68. DATA CARELE /'0','1','2','3','4','5','6','7','8','9'/
  69. DATA STR1 /'META'/
  70. C DATA POUR LE TABLEAU DES COULEURS ICCC(K) POUR GKS
  71. DATA ICCC/4,2,6,3,7,5,1,8,9,10/
  72. C
  73. DATA WKID/3/
  74. DATA ICCOL/7/
  75. DATA IASF/1,1,1,1,1,1,1,1,1,1,1,1,1/
  76. DATA IDSG/0/
  77. DATA IACT/0/
  78. DATA IDWISS/2/
  79. DATA IWISS/0/
  80. C NB DE COULEUR SI PAS AUTRE INDICATION
  81. NCOUMA=7
  82. C SAUVER HAUT
  83. HAUT=HAUTT
  84. NHAUT=31
  85. C SAUVER VALEUR
  86. VALEUR=VALEU
  87. C O SEGMENT POUR COMMENCER
  88. KSEGN=0
  89. C INITIALISATION DE L'UNITE PHYSIQUE
  90. AX=AXAX
  91. AY=AYAY
  92. DO 1 NBCR=72,2,-1
  93. IF (TITRE(NBCR:NBCR).NE.' ') GOTO 2
  94. 1 CONTINUE
  95. 2 CONTINUE
  96. X1=0.
  97. X2=0.
  98. Y1=0.
  99. Y2=0.
  100. C POUR LA GESTION DES TEXTES
  101. INCOOR=0
  102. INUSEG=50+(100*(WKID-1))
  103. IXSEG=0
  104. ICCLE=0
  105. C
  106. C INITIALISATION GKS
  107. C CHANNEL 1 WORKSTATION 1 METAFILE
  108. C CHANNEL 2 WORKSTATION 2 WISS
  109. C CHANNEL 3 WORKSTATION 3,4,.. ECRAN
  110. C ATTENTION IL FAUT FERMER LA WORKSTATION
  111. C POUR REVENIR EN MODE ALPHA
  112. IF(IACT.EQ.1) THEN
  113. CALL GQOPS(ISTA)
  114. IF(ISTA.EQ.4) CALL GCLSG
  115. C INQUIRE SET MEMBER OF OPEN WORKSTATION
  116. NWAC=0
  117. 5002 CALL GQOPWK(NWAC,IERR,NTWAC,NWID)
  118. IF(NWID.EQ.WKID)GOTO 5001
  119. IF(NWAC.EQ.NTWAC)GOTO 5003
  120. NWAC=NWAC+1
  121. GOTO 5002
  122. 5001 CALL GQOPS(ISTA)
  123. IF (ISTA.EQ.3) CALL GDAWK(WKID)
  124. IF (ISTA.EQ.3.OR.ISTA.EQ.2) CALL GCLWK(WKID)
  125. C
  126. 5003 CALL GDAWK(IDWISS)
  127. CALL GCLWK(IDWISS)
  128. CALL GOPWK(IDWISS,2,INWISS)
  129. CALL GACWK(IDWISS)
  130. GOTO 5000
  131. ENDIF
  132. C
  133. C OUVERTURE GKS
  134. C FILE 22 ERROR FILE FOR GKS
  135. IF (WKID.EQ.3) CALL GOPKS(22,1)
  136. C
  137. C OUVERTURE WORKSTATIONS -> ECRAN, METAFILE
  138. C ECRAN -> IDENTIFICATEUR:1
  139. C CONNECTION :1
  140. C TYPE :4(SUN) 5001 (GKS GRAL IBM 3279)
  141. C ON NE GARDE QUE TROIS WORKSTATIONS SIMULTANEES (UNE SUR IBM)
  142. C ( CAS DU SUN)
  143. 5000 CONTINUE
  144. WKCON=3
  145. C LECTURE DE DIVERS PARAMETRES EN FILE 97 CASTEM2 GRAFPARM
  146. * OPEN (UNIT=97,FILE='GKS.DATA',FORM='FORMATTED')
  147. REWIND 97
  148. C LECTURE DU NOMBRE MAX DE WKID AUTORISE POUR LA VERSION DE GKS
  149. READ(97,*)IWKIDLI
  150. C PV UNE SEULE WKID => 3 MAXIMUM
  151. IWKIDLI=3
  152. C LECTURE DU COMPTEUR DE METAFILE
  153. READ (97,*)KMETA
  154. C LECTURE DU WORKSTATION-TYPE POUR L'ECRAN
  155. READ (97,*) WKTY
  156. C LECTURE DU WORKSTATION-TYPE POUR LA WISS
  157. READ(97,*) INWISS
  158. C LECTURE DU WORKSTATION-TYPE POUR LES METAFILES
  159. READ(97,*) INMETA
  160. C OUVERTURE ET ACTIVATION DE LA WISS
  161. IF(IWISS.EQ.0) THEN
  162. CALL GOPWK(IDWISS,2,INWISS)
  163. CALL GACWK(IDWISS)
  164. IWISS=1
  165. ENDIF
  166. C
  167. C OUVERTURE DE L'ECRAN
  168. CALL GOPWK(WKID,WKCON,WKTY)
  169. C
  170. C CHARGEMENT DES PATTERN
  171. C
  172. C INITIALISATION DE LA TABLE DES COULEURS
  173. C IND RED GREEN BLUE
  174. C NOIR 0 0.0 0.0 0.0
  175. C BLEU 4 0.0 0.0 1.0
  176. C ROUGE 2 1.0 0.0 0.0
  177. C ROSE 6 1.0 0.0 1.0
  178. C VERT 3 0.0 1.0 0.0
  179. C TURQUOI 7 0.0 1.0 1.0
  180. C JAUNE 5 1.0 1.0 0.0
  181. C BLANC 8 1.0 1.0 1.0
  182. C NOIR 1 0.0 0.0 0.0
  183. CALL GSCR(WKID,0,0.0,0.0,0.0)
  184. CALL GSCR(WKID,4,0.0,0.0,1.0)
  185. CALL GSCR(WKID,2,1.0,0.0,0.0)
  186. CALL GSCR(WKID,6,1.0,0.0,1.0)
  187. CALL GSCR(WKID,3,0.0,1.0,0.0)
  188. CALL GSCR(WKID,7,0.0,1.0,1.0)
  189. CALL GSCR(WKID,5,1.0,1.0,0.0)
  190. CALL GSCR(WKID,1,1.0,1.0,1.0)
  191. CALL GSCR(WKID,8,0.0,0.0,0.0)
  192. C ACTIVATION DE L'ECRAN
  193. CALL GACWK(WKID)
  194. IACT=1
  195. C
  196. C OUVERTURE SEGMENT 6
  197. ISEG=6+(100*(WKID-1))
  198. CALL GCRSG(ISEG)
  199. CALL GSVIS(ISEG,1)
  200. CALL GSDTEC(ISEG,0)
  201. C
  202. C DIMENSION DE L'ECRAN (RX,RY EN METRES, LX ET LY EN PIXELS)
  203. CALL GQDSP(WKTY,ERR,DC,RX,RY,LX,LY)
  204. C
  205. C METTRE LES ASF EN INDIVIDUAL
  206. CALL GSASF(IASF)
  207. C
  208. C MODE DE MISE A JOUR (MODE PAR DEFAUT)CD CEA.SUN
  209. C
  210. CALL GSDS(WKID,1,0)
  211. C
  212. C DEFINITION DE LA FENETRE DE LA WORKSTATION (ECRAN)
  213. WRATIO=RY/RX
  214. R=RY
  215. IF(WRATIO.GT.1)THEN
  216. R=RX
  217. WRATIO=1./WRATIO
  218. END IF
  219. CALL GSWKWN(WKID,0.,1.,0.,RY/RX)
  220. CALL GSWKVP(WKID,0.,RX,0.,RY)
  221. C EFFACEMENT DE LADITE
  222. CALL GSFAIS(1)
  223. CALL GSFACI(8)
  224. CALL GSWN(4,0.,1.,0.,1.)
  225. CALL GSVP(4,0.,1.,0.,(RY/RX))
  226. CALL GSELNT(4)
  227. PXA(1)=0
  228. PyA(1)=0
  229. PXA(2)=0
  230. PyA(2)=1
  231. PXA(3)=1
  232. PyA(3)=1
  233. PXA(4)=1
  234. PyA(4)=0
  235. CALL GFA(4,PXA,PYA)
  236. C
  237. C DEFINITION DE LA FENETRE ET CLOTURE DE LA DEUXIEME WORKSTATION (PLOTTE
  238. C
  239. C DEFINITION DE LA TRANSFORMATION DE NORMALISATION 1 POUR LE TITRE
  240. CALL GSWN(1,0.,80.,0.,2.)
  241. CALL GSVP(1,0.,1.,0.,(RY/RX)*0.1)
  242. CALL GSELNT(1)
  243. C
  244. C INITIALISATION DES ATTRIBUTS CARACTERES
  245. CALL GSCHH(1.0)
  246. CALL GSTXCI(ICCC(7))
  247. CALL GSTXFP(1,2)
  248. CALL GSCHXP(1.)
  249. CALL GSCHSP(0.1)
  250. C ECRITURE TITRE
  251. CALL GTX(68.,1.,'CASTEM 2000')
  252. CALL GTX(0.,1.,TITRE)
  253. C
  254. C FERMETURE SEGMENT
  255. CALL GCLSG
  256. C
  257. RETURN
  258. *
  259. ENTRY KDFENE(XMIN,XXAX,YMIN,YYAX,XR1,XR2,YR1,YR2,FENET)
  260. C
  261. C DEFINITION DE LA FENETRE UTILISATEUR
  262. C XMIN,X,X,YMIN,YYAX : COORDONNEES DE LA FENETRE UTILISATEUR
  263. C XR1,XR2,YR1,YR2 : COORDONNEES RETOURNEES
  264. C (EFFECTIVEMENT UTILISEES)
  265. C FENET : CALCUL DU RATIO (OUI OU NON) NON UTILISE
  266. C
  267. EC1=AX-3.
  268. EC2=AY-3.
  269. C DEFINITION UNITE UTILISATEUR FENETRE UTILISEE MARGES A RESPECTER
  270. C RETOUR X1 X2 Y1 Y2 FENETRE EFFECTIVEMENT UTILISEE ????
  271. C OUVERTURE SEGMENT
  272. C CALCUL DE LA FENETRE (XMIN,XXA,YMIN,YYA) -> DETERMINATION DE LA TRANSF
  273. C DE NORMALISATION 2
  274. C ON COMPLETE LA FENETRE UTILISATEUR POUR RENTRER DANS LA FENETRE REELL
  275. SXMIN=XMIN
  276. SXXAX=XXAX
  277. SYMIN=YMIN
  278. SYYAX=YYAX
  279. C MARGE POUR LES QUAL ET NUMERO DE NOEUDS OU ELEMENTS
  280. XDIFF=(XXAX-XMIN)/2.*1.10
  281. YDIFF=(YYAX-YMIN)/2.*1.10
  282. XMILL=(XXAX+XMIN)/2.
  283. YMILL=(YYAX+YMIN)/2.
  284. C NECESSAIRE POUR OPERATEUR DESSIN
  285. FENE=FENET
  286. IF (FENE) THEN
  287. RAP=(XDIFF/YDIFF)/(RX/RY)
  288. ELSE
  289. RAP=1.
  290. ENDIF
  291. IF (RAP.GE.1) THEN
  292. X1=XMILL-XDIFF
  293. X2=XMILL+XDIFF
  294. Y1=YMILL-(YDIFF*RAP)
  295. Y2=YMILL+(YDIFF*RAP)
  296. ELSE
  297. X1=XMILL-(XDIFF/RAP)
  298. X2=XMILL+(XDIFF/RAP)
  299. Y1=YMILL-YDIFF
  300. Y2=YMILL+YDIFF
  301. ENDIF
  302. IF(VALEUR) THEN
  303. C LA FENETRE EST XMIN,XXAX,YMIN,YYAX
  304. CALL GSWN(2,X1,X2,Y1,Y2)
  305. CALL GSVP(2,0.,0.8,(RY/RX)*0.1,(RY/RX)*0.9)
  306. ELSE
  307. C LA FENETRE EST RECALCULEE POUR GARDER LES BONS RAPPORTS
  308. CALL GSWN(2,X1,X2,Y1,Y2)
  309. CALL GSVP(2,0.,0.9,(RY/RX)*0.1,(RY/RX))
  310. ENDIF
  311. C
  312. CALL GSELNT(2)
  313. C
  314. C INITIALISATION DE LA POSITION DU LOCATOR
  315. XINID=(X1+X2)/2.
  316. YINID=(Y1+Y2)/2.
  317. C
  318. C INITIALISATION DES VALEURS RENDUES
  319. XR1=XMIN
  320. XR2=XXAX
  321. YR1=YMIN
  322. YR2=YYAX
  323. C
  324. C OUVERTURE SEGMENT 1
  325. C DEMANDE DU NOM DU SEGMENT OUVERT (FERMETURE)
  326. CALL GQOPS(ISTA)
  327. IF (ISTA.EQ.4) THEN
  328. CALL GQOPSG(IIERRI,INUM)
  329. CALL GCLSG
  330. CALL GDSG(INUM)
  331. ENDIF
  332. INUM=8+(100*(WKID-1))
  333. CALL GQSGUS(0,IERGK,NBSEG,ISEGNA)
  334. DO 4461 ISEG=1,NBSEG
  335. CALL GQSGUS(ISEG,IERGK,NBSE,ISEGNA)
  336. IF (ISEGNA.EQ.INUM) THEN
  337. CALL GDSG(INUM)
  338. GOTO 4462
  339. ENDIF
  340. 4461 CONTINUE
  341. 4462 CONTINUE
  342. ISEG=1+(100*(WKID-1))
  343. CALL GCRSG(ISEG)
  344. IXSEG=1
  345. C
  346. C ATTRIBUT VISIBILITE
  347. CALL GSVIS(ISEG,1)
  348. C DETECTABILITE
  349. CALL GSDTEC(ISEG,0)
  350. C
  351. C MODE VECTEUR (POUR LES CARACTERES)
  352. CALL GSTXFP(1,2)
  353. C
  354. C TAILLE DES CARACTERES PAR DEFAUT
  355. C DETERMINATION DE LA HAUTEUR DES CARACTERES, DE L'ESPACE ENTRE CARACTER
  356. CHH=(Y2-Y1)/50.0
  357. CALL GSCHH(CHH)
  358. CALL GQCHXP(INDERR,CHXPO)
  359. CHXP=(X2-X1)/(Y2-Y1)/RX*RY*CHXPO
  360. CALL GSCHXP(CHXP)
  361. CALL GSCHSP(0.1)
  362. C
  363. C
  364. C COULEUR COURANTE (ICCOL)
  365. CALL GSFACI(ICCC(ICCOL))
  366. CALL GSPLCI(ICCC(ICCOL))
  367. CALL GSPMCI(ICCC(ICCOL))
  368. CALL GSTXCI(ICCC(ICCOL))
  369. C
  370. C OVERPAINT
  371. C
  372. ICOISI=-100
  373. C
  374. RETURN
  375. C
  376. ENTRY KTRLAB(X,Y,CARACT,NCAR,HAUTT)
  377. C
  378. C ECRITURE D'UN TEXTE EN (X,Y)
  379. C X,Y : COORDONNEES DE L'ORIGINE DU TEXTE
  380. C CARACT : TEXTE
  381. C NCAR : NOMBRE DE CARACTERES A ECRIRE
  382. C HAUT :
  383. C
  384. HAUT=HAUTT
  385. DO 201 ICAR=NCAR,1,-1
  386. IF (CARACT(ICAR:ICAR).NE.' ') GOTO 202
  387. 201 CONTINUE
  388. C CHAINE VIDE
  389. RETURN
  390. 202 CONTINUE
  391. C ECRITURE TEXTE EN (X,Y)
  392. CALL GTX(X,Y,CARACT)
  393. RETURN
  394. C
  395. ENTRY KTRBOX (HAUTX,HAUTY)
  396. C CARACTERES EN MODE VECTEUR (STROKE)
  397. CALL GSTXFP(1,2)
  398. C INTERROGATION SUR LA TAILLE DE DEFAUT
  399. CALL GQCHH(ERR,CHH)
  400. CALL GQCHXP(INDERR,CHXP)
  401. C MISE A JOUR DE LA TAILLE
  402. * CALL GSCHH(CHH*HAUTX)
  403. * CALL GSCHXP(CHXP*HAUTY)
  404. * CALL GSCHSP(0.1)
  405. RETURN
  406. C
  407. ENTRY KCHCOU(JCOLO)
  408. C
  409. C CHANGEMENT COULEUR (8 DOIT CORRESPONDRE A L'EFFACEMENT)
  410. C JCOLO : INDICE DE LA NOUVELLE COULEUR
  411. C CHANGEMENT DE COULEUR (VOIR LA TABLE DES COULEUR)
  412. C
  413. CALL GSFACI(ICCC(JCOLO))
  414. CALL GSPLCI(ICCC(JCOLO))
  415. CALL GSPMCI(ICCC(JCOLO))
  416. CALL GSTXCI(ICCC(JCOLO))
  417. RETURN
  418. C
  419. ENTRY KFVALI(IFENI,IRESU,NH)
  420. C
  421. IF (IFENI.EQ.1) THEN
  422. WRATIO=1
  423. IRESU=0
  424. CALL GSWN(3,0.,1.,2.,33.)
  425. CALL GSVP(3,0.8,1.,(RY/RX)*0.1,(RY/RX)*0.9)
  426. CALL GSELNT(3)
  427. CALL GSCHH(1.0)
  428. CALL GSCHXP(0.06)
  429. CALL GSCHSP(0.1)
  430. ELSE
  431. CALL GCLSG
  432. CALL GSCHXP(1.)
  433. CALL GSELNT(2)
  434. ENDIF
  435. NH=31
  436. RETURN
  437. C
  438. ENTRY KMENU(LEGEND,NCASE,LLONG)
  439. C AFFICHAGE DU MENU
  440. C
  441. DO 805 II=1,24
  442. IPF(II)=0
  443. 805 CONTINUE
  444. C TEST SUR L'EXISTENCE DES SEGMENTS 10 A 22
  445. C SELECTION TRANSFORMATION 1
  446. CALL GSELNT(1)
  447. CALL GQOPS(ISTA)
  448. IF (ISTA.EQ.4) CALL GCLSG
  449. DO 446 KBOIT=1,13
  450. CALL GQSGUS(0,IERGK,NBSEG,ISEGNA)
  451. DO 4460 ISEG=1,NBSEG
  452. CALL GQSGUS(ISEG,IERGK,NBSE,ISEGNA)
  453. IF (ISEGNA.EQ.9+KBOIT+(100*(WKID-1))) THEN
  454. CALL GDSG(9+KBOIT+(100*(WKID-1)))
  455. GOTO 446
  456. ENDIF
  457. 4460 CONTINUE
  458. 446 CONTINUE
  459. C CREATION DU MENU
  460. XB=1.
  461. CALL GQWKS(WKID,IERGK,ISTA)
  462. IF (ISTA.NE.1) CALL GACWK(WKID)
  463. DO 445 KBOIT=1,13
  464. KKIMP=0
  465. IF (KBOIT.LE.NCASE) THEN
  466. MLONG=LLONG
  467. ELSE
  468. MLONG=1
  469. ENDIF
  470. IF (KBOIT.EQ.12.AND.IPF(2).NE.0.AND.MLONG.EQ.1) KKIMP=1
  471. IF (KKIMP.EQ.1) MLONG=4
  472. IF (MLONG.EQ.1) GOTO 447
  473. ISEG=KBOIT+9+(100*(WKID-1))
  474. CALL GCRSG(ISEG)
  475. IF (KBOIT.NE.1) IPF(KBOIT-1)=1
  476. CALL GSVIS(ISEG,1)
  477. CALL GSDTEC(ISEG,1)
  478. C PAVE DE COULEUR POUR LOCATOR INPUT
  479. CALL GSFAIS(1)
  480. CALL GSFACI(ICCC(2))
  481. PXA(1)=XB
  482. PXA(2)=PXA(1)+2.
  483. PXA(3)=PXA(2)
  484. PXA(4)=PXA(1)
  485. PYA(1)=0.6
  486. PYA(2)=PYA(1)
  487. PYA(3)=PYA(1)+0.4
  488. PYA(4)=PYA(3)
  489. CALL GFA(4,PXA,PYA)
  490. C FIN DE CONSTRUCTION DU PAVE DE COULEUR
  491. CALL GSTXCI(ICCC(2))
  492. CALL GSTXFP(1,2)
  493. CALL GSCHH(0.7)
  494. CALL GSCHSP(0.1)
  495. CALL GSCHXP(1.0)
  496. IF (KKIMP.EQ.1) THEN
  497. CALL GTX(PXA(1),0.,'Meta')
  498. ELSE
  499. C CALL GTX(PXA(1),0.,LEGEND(KBOIT)(1:MLONG))
  500. CALL GTX(PXA(1),0.,LEGEND(1+(KBOIT-1)*MLONG:KBOIT*MLONG))
  501. ENDIF
  502. XB=XB+80./(NCASE+1)
  503. CALL GCLSG
  504. 447 CONTINUE
  505. 445 CONTINUE
  506. IDSG=1
  507. CALL GSCHH(1.0)
  508. CALL GSCHXP(1.0)
  509. CALL GSCHSP(0.1)
  510. CALL GSELNT(2)
  511. RETURN
  512. C
  513. ENTRY KINSEG(NBSEGT,IRESS)
  514. C
  515. C INITIALISATION D'UN SEGMENT
  516. C NBSEGT : NUMERO DU SEGMENT
  517. C IRESS : SELON SA VALEUR, ON FERME LE SEGMENT PRECEDENT
  518. C
  519. IF (IRESS.NE.2) THEN
  520. IF (IRESS.LT.2.OR.IRESS.GT.5) THEN
  521. C FERMETURE SEGMENT
  522. CALL GCLSG
  523. ENDIF
  524. ELSE
  525. IRESS=7
  526. ENDIF
  527. CALL GQOPS(IOP)
  528. IF (IOP.EQ.4) CALL GCLSG
  529.  
  530. C
  531. C CREATION SEGMENT NBSEGT
  532. ISEG=NBSEGT+(100*(WKID-1))
  533. CALL GCRSG(ISEG)
  534. C
  535. C ATTRIBUT DE VISIBILITE
  536. CALL GSVIS(ISEG,1)
  537. C DETECTABILITE
  538. CALL GSDTEC(ISEG,0)
  539. C
  540. C MODE VECTEUR POUR LES CARACTERES (STROKE)
  541. C CALL GSTXFP(1,2)
  542. C
  543. C TAILLE DES CARACTERES
  544. IF (NBSEGT.NE.7) THEN
  545. * SAUF CAS DES LEGENDES ISOVALEURS
  546. CHH=(Y2-Y1)/50.0
  547. CALL GSCHH(CHH)
  548. CALL GQCHXP(INDERR,CHXPO)
  549. CHXP=(X2-X1)/(Y2-Y1)/RX*RY*CHXPO
  550. CALL GSCHXP(CHXP)
  551. CALL GSCHSP(0.1)
  552. ELSE
  553. * CAS DES LEGENDES ISOVALEURS
  554. CALL GSCHH(0.9)
  555. CALL GSCHXP(1./21.)
  556. CALL GSCHSP(0.1)
  557. ENDIF
  558. RETURN
  559. C
  560. ENTRY KPOLRL(NTRSTU,XTR,YTR)
  561. C
  562. C TRACE D'UNE POLYLIGNE DANS LA VALEUR COURANTE
  563. C NTR : NOMBRE DE POINTS
  564. C XTR,YTR : COORDONNEES DES POINTS
  565. C
  566. NTR=NTRSTU
  567. IF (NTR.LE.1) RETURN
  568. C
  569. IF (NTR.LE.1) RETURN
  570. C
  571. C TRACE D'UNE POLYLIGNE
  572. CALL GSELNT(2)
  573. CALL GPL(NTR,XTR(1),YTR(1))
  574. C
  575. RETURN
  576. C
  577. ENTRY KTRDIG(X,Y,INCLE)
  578. C
  579. C DIGITALISATION D'UN POINT
  580. C X,Y : COORDONNEES DU POINT DESIGNE
  581. C
  582. INCLE=0
  583. C DEMANDE D'ENTREE DU LOCATOR
  584. CALL GSLCM(WKID,1,0,1)
  585. CALL GUWK(WKID,1)
  586. ITNR=2
  587. CALL GINLC(WKID,1,ITNR,XINID,YINID,1,0.,RX,0.,RY,0,0)
  588. CALL GRQLC(WKID,1,ISTAT,ITNR,X,Y)
  589. C
  590. C CALCUL DE CONVERSION NDC -> WC
  591. X=X2-((0.9-X)/0.9)*(X2-X1)
  592. Y=Y2-((WRATIO-Y)/0.9/WRATIO)*(Y2-Y1)
  593. IF((X.LT.X1).OR.(X.GT.X2))INCLE=3
  594. IF((Y.LT.Y1).OR.(Y.GT.Y2))INCLE=3
  595. C
  596. C MISE A JOUR DE LA NOUVELLE POSITION DU LOCATOR
  597. XINID=X
  598. YINID=Y
  599. C
  600. C REPASSER SUR LE SEGMENT ISGOLD
  601. ISGNEW=9+(100*(WKID-1))
  602. ISGOLD=8+(100*(WKID-1))
  603. CALL GQOPS(ISTA)
  604. IF (ISTA.EQ.4) THEN
  605. CALL GQOPSG(IIERRI,INUM)
  606. IF(INUM.NE.ISGOLD) CALL GCLSG
  607. ELSE
  608. IERGK=1
  609. CALL GQSGUS(0,IERGKK,NBSEG,ISEGNA)
  610. DO 4463 ISEG=1,NBSEG
  611. CALL GQSGUS(ISEG,IERGKK,NBSE,ISEGNA)
  612. IF (ISEGNA.EQ.ISGOLD) THEN
  613. IERGK=0
  614. GOTO 4464
  615. ENDIF
  616. 4463 CONTINUE
  617. 4464 CONTINUE
  618. IF (IERGK.EQ.0) THEN
  619. CALL GRENSG(ISGOLD,ISGNEW)
  620. C CREATION DU SEGMENT COURANT
  621. CALL GCRSG(ISGOLD)
  622. RMAT(1)=1.
  623. RMAT(2)=0.
  624. RMAT(3)=0.
  625. RMAT(4)=1.
  626. RMAT(5)=0.
  627. RMAT(6)=0.
  628. CALL GINSG(ISGNEW,RMAT)
  629. CALL GDSG(ISGNEW)
  630. ELSE
  631. CALL GCRSG(ISGOLD)
  632. ENDIF
  633. C ATTRIBUT VISIBILITE
  634. CALL GSVIS(ISGOLD,1)
  635. C DETECTABILITE
  636. CALL GSDTEC(ISGOLD,0)
  637. C MODE VECTEUR (POUR LES CARACTERES)
  638. CALL GSTXFP(1,2)
  639. C TAILLE DES CARACTERES PAR DEFAUT
  640. C DETERMINATION DE LA HAUTEUR DES CARACTERES, DE L'ESPACE ENTRE CARACTER
  641. CHH=(Y2-Y1)/50.0
  642. CALL GSCHH(CHH)
  643. CALL GQCHXP(INDERR,CHXPO)
  644. CHXP=(X2-X1)/(Y2-Y1)/RX*RY*CHXPO
  645. CALL GSCHXP(CHXP)
  646. CALL GSCHSP(0.1)
  647. C COULEUR COURANTE (ICCOL)
  648. CALL GSFACI(ICCC(ICCOL))
  649. CALL GSPLCI(ICCC(ICCOL))
  650. CALL GSPMCI(ICCC(ICCOL))
  651. CALL GSTXCI(ICCC(ICCOL))
  652. C
  653. ENDIF
  654. C
  655. RETURN
  656. C
  657. ENTRY KTRFAC(NP,XTR,YTR,ZN,ICOLE,IEFF)
  658. C
  659. C TRACE D'UNE FACE AVEC DEGRADE
  660. C NP : NOMBRE DE POINTS
  661. C XTR,YTR : COORDONNEES DES POINTS
  662. C ICOLE : COULEUR
  663. C KP : ECLAIRAGE
  664. C
  665. IEFF=0
  666. KP=INT(ZN*4./1.58)+1
  667. C
  668. IEFF=0
  669. CALL GSELNT(2)
  670. C
  671. C EFFACEMENT DE LA ZONE (FAUT-IL LE FAIRE AVEC GKS?)
  672. IEFF=1
  673. C IF (KP.GE.3) IEFF=1
  674. IF (KP.NE.4) THEN
  675. C COULEUR EFFACEMENT -> 8
  676. C PATTERN PLEIN
  677. C TRACE DE LA ZONE PLEINE
  678. ENDIF
  679. C
  680. C COULEUR (ICOLE)
  681. CALL GSFACI(ICCC(ICOLE))
  682. C
  683. CALL GSFAIS(1)
  684. C
  685. C TRACE DE LA ZONE PLEINE
  686. CALL GFA(NP,XTR,YTR)
  687. RETURN
  688. C
  689. ENTRY KTRAIS(NP,XTR,YTR,ICOLE)
  690. C
  691. C TRACE D'UNE FACE SANS CALCUL DE DEGRADE
  692. C NP : NOMBRE DE POINTS
  693. C XTR,YTR : COORDONNEES DES POINTS
  694. C ICOLE : COULEUR
  695. C
  696. C CHANGEMENT DE COULEUR SI CE N'EST PAS LA MEME
  697. IF (ICOLE.NE.ICOISI) THEN
  698. ICOISI=ICOLE
  699. C CALL GSELNT(2)
  700. C COULEUR (ICOISI)
  701. CALL GSFACI(ICCC(ICOISI))
  702. ENDIF
  703. C
  704. C TRACE DU POLYGONE
  705. CALL GSFAIS(1)
  706. CALL GFA(NP,XTR,YTR)
  707. C
  708. RETURN
  709. C
  710. C EFFACEMENT ECRAN ON UTILISE GDDM OU CE QU'ON PEUT
  711. ENTRY KTREFF
  712. * A VOIR SELON LES TERMINAUX
  713. C IMPLANTATION CERN
  714. C ROUTINE VMCMS DANS KERNLIB
  715. * CALL VMCMS('CLRSCRN',IRC)
  716. RETURN
  717. C REINITIALISATION CHAMP TEXT
  718. C
  719. C AFFICHAGE RETOUR CLE TAPEE
  720. ENTRY KTRAFF(ICLE)
  721. C
  722. C AFFICHAGE RETOUR CLE TAPEE
  723. C ICLE : NUMERO DE CLE RENDUE
  724. C
  725. 1540 CONTINUE
  726. ICLE=0
  727. C DEMANDE DU NOM DU SEGMENT OUVERT (FERMETURE)
  728. ISGNEW=9+(100*(WKID-1))
  729. ISGOLD=8+(100*(WKID-1))
  730. CALL GQOPS(ISTA)
  731. IF (ISTA.EQ.4) THEN
  732. CALL GQOPSG(IIERRI,INUM)
  733. IF(INUM.NE.ISGOLD) CALL GCLSG
  734. ELSE
  735. IERGK=1
  736. CALL GQSGUS(0,IERGKK,NBSEG,ISEGNA)
  737. DO 4466 ISEG=1,NBSEG
  738. CALL GQSGUS(ISEG,IERGKK,NBSE,ISEGNA)
  739. IF (ISEGNA.EQ.ISGOLD) THEN
  740. IERGK=0
  741. GOTO 4467
  742. ENDIF
  743. 4466 CONTINUE
  744. 4467 CONTINUE
  745. IF (IERGK.EQ.0) THEN
  746. CALL GRENSG(ISGOLD,ISGNEW)
  747. C CREATION DU SEGMENT COURANT
  748. CALL GCRSG(ISGOLD)
  749. RMAT(1)=1.
  750. RMAT(2)=0.
  751. RMAT(3)=0.
  752. RMAT(4)=1.
  753. RMAT(5)=0.
  754. RMAT(6)=0.
  755. CALL GINSG(ISGNEW,RMAT)
  756. CALL GDSG(ISGNEW)
  757. ELSE
  758. CALL GCRSG(ISGOLD)
  759. ENDIF
  760. C ATTRIBUT VISIBILITE
  761. CALL GSVIS(ISGOLD,1)
  762. C DETECTABILITE
  763. CALL GSDTEC(ISGOLD,0)
  764. C MODE VECTEUR (POUR LES CARACTERES)
  765. CALL GSTXFP(1,2)
  766. C TAILLE DES CARACTERES PAR DEFAUT
  767. C DETERMINATION DE LA HAUTEUR DES CARACTERES, DE L'ESPACE ENTRE CARACTER
  768. CHH=(Y2-Y1)/50.0
  769. CALL GSCHH(CHH)
  770. CALL GQCHXP(INDERR,CHXPO)
  771. CHXP=(X2-X1)/(Y2-Y1)/RX*RY*CHXPO
  772. CALL GSCHXP(CHXP)
  773. CALL GSCHSP(0.1)
  774. C COULEUR COURANTE (ICCOL)
  775. CALL GSFACI(ICCC(ICCOL))
  776. CALL GSPLCI(ICCC(ICCOL))
  777. CALL GSPMCI(ICCC(ICCOL))
  778. CALL GSTXCI(ICCC(ICCOL))
  779. C
  780. ENDIF
  781. C
  782. ISEG=0
  783. C INITIALISATION PICK
  784. CALL GSPKM(WKID,1,0,1)
  785. C DEMANDE D'ENTREE
  786. * CALL GRSGWK(WKID)
  787. CALL GUWK(WKID,1)
  788. CALL GRQPK(WKID,1,ISTAT,ICHNR,PCID)
  789. C CONVERSION NUMERO DE SEGMENT SAISI
  790. ISEG=ICHNR-(100*(WKID-1))
  791. IF (ISTAT.NE.1) GOTO 1540
  792. C
  793. IF(ISEG.GE.50) THEN
  794. C DEMANDE ENTREE STRING
  795. CALL GSSTM(WKID,1,0,1)
  796. CALL GRQST(WKID,1,ISTAT,IL,STRING)
  797. C DESTRUCTION DU SEGMENT DESIGNE
  798. CALL GDSG(ICHNR)
  799. C REECRITURE DU SEGMENT AVEC LA NOUVELLE CHAINE
  800. CALL GCRSG(ICHNR)
  801. XX=TEXTX(ISEG-50+1)
  802. YY=TEXTY(ISEG-50+1)
  803. CALL GTX(XX,YY,STRING)
  804. CALL GCLSG
  805. CALL GSDTEC(ICHNR,1)
  806. C MODIFICATION DANS LE TABLEAU
  807. TEXTE(ISEG-50+1)(1:15)=STRING(1:15)
  808. ENDIF
  809. ICLE=ISEG
  810. ICLE=ICLE-10
  811. * WRITE (6,*) ' ICLE ',ICLE
  812. IF (ICLE.NE.0.AND.IPF(ICLE).EQ.0) GOTO 1540
  813. C
  814. C CHANGEMENT MODE DE MISE A JOUR (BLOCAGE)
  815. CALL GSDS(WKID,1,0)
  816. C
  817. RETURN
  818. C
  819. * ROUTINE POUR SORTIR CORRECTEMENT DE GKS AVEC MODIFIER
  820. ENTRY KTRMFI
  821. IACT=0
  822. IWISS=0
  823. CALL GQWKS(WKID,IERGK,ISTA)
  824. IF (IERGK.EQ.0) THEN
  825. IF(ISTA.EQ.1) CALL GDAWK(WKID)
  826. CALL GCLWK(WKID)
  827. ENDIF
  828. IDSG=0
  829. RETURN
  830. C
  831. * ENTRY KZOOM(IRESU,ISORT,IQUALI,INUMNO,INUMEL,XMI,XMA,YMI,YMA)
  832. ENTRY KZOOM(IZOOM,XMI,XMA,YMI,YMA)
  833. C
  834. C XMI,XMA,YMI,YMA POINTS RENDUS APRES LE ZOOM
  835. C
  836. IRESU=1
  837. C ENTREE DES DEUX POINTS POUR LE RECTANGLE DU ZOOM
  838. ITNR=2
  839. CALL GINLC(WKID,1,ITNR,XINID,YINID,1,0.,RX,0.,RY,0,0)
  840. CALL GSELNT(0)
  841. CALL GSLCM(WKID,1,0,1)
  842. C ACCUMULATION DE MATRICES
  843. CALL GRQLC(WKID,1,STAT,ITNR1,XRO,YRO)
  844. CALL GINLC(WKID,1,ITNR1,XRO,YRO,1,0.,RX,0.,RY,0,0)
  845. CALL GRQLC(WKID,1,STAT,ITNR1,XCOL,YCOL)
  846. C GESTION DU CADRE DU ZOOM : CARRE
  847. XMI=MIN(XRO,XCOL)
  848. XMA=MAX(XRO,XCOL)
  849. YMI=MIN(YRO,YCOL)
  850. YMA=MAX(YRO,YCOL)
  851. XMA=MAX(XMA,YMA-YMI+XMI)
  852. YMI=MIN(YMI,-XMA+XMI+YMA)
  853. IF (VALEUR) THEN
  854. PAS=MIN(0.8/(XMA-XMI),(RY/RX)*0.8/(YMA-YMI))
  855. ELSE
  856. PAS=MIN(0.9/(XMA-XMI),(RY/RX)*0.9/(YMA-YMI))
  857. ENDIF
  858. C INTERROGATION SUR LA MATRICE PRECEDENTE
  859. ISEG=1+(100*(WKID-1))
  860. CALL GQSGA(ISEG,ERR,SEGT,VIS,HIGH,GRPR,DET)
  861. C INITIALISATION DES MATRICES
  862. ISW=1
  863. SEGMT(1)=PAS
  864. SEGMT(2)=0.
  865. SEGMT(3)=0.
  866. SEGMT(4)=PAS
  867. IF (VALEUR) THEN
  868. XVALEU=0.8
  869. YVALEU=0.9*(RY/RX)
  870. ELSE
  871. XVALEU=0.9
  872. YVALEU=1.0*(RY/RX)
  873. ENDIF
  874. SEGMT(5)=XVALEU/2-(XMA+XMI)/2*PAS
  875. SEGMT(6)=(YVALEU+0.1*(RY/RX))/2-(YMA+YMI)/2*PAS
  876. ROUT(1)=SEGMT(1)*SEGT(1) + SEGMT(2)*SEGT(3)
  877. ROUT(2)=SEGMT(2)*SEGT(1) + SEGMT(4)*SEGT(2)
  878. ROUT(3)=SEGMT(1)*SEGT(3) + SEGMT(3)*SEGT(4)
  879. ROUT(4)=SEGMT(2)*SEGT(3) + SEGMT(4)*SEGT(4)
  880. ROUT(5)=SEGMT(1)*SEGT(5) + SEGMT(3)*SEGT(6) + SEGMT(5)
  881. ROUT(6)=SEGMT(2)*SEGT(5) + SEGMT(4)*SEGT(6) + SEGMT(6)
  882. C TRANSFORMATION PAR LA MATRICE
  883. CALL GSSGT(ISEG,ROUT)
  884. C
  885. * IF (IDEFOR.NE.0) THEN
  886. *1093 ISORT=0
  887. * RETURN
  888. * ENDIF
  889. C SUPPRESSION DE SEGMENTS
  890. IDEL1=0
  891. IDEL2=0
  892. IDEL3=0
  893. *1093 IF (IQUALI.NE.0) IDEL1=3+(100*(WKID-1))
  894. *1093 IF (INUMNO.NE.0) IDEL2=4+(100*(WKID-1))
  895. *1093 IF (INUMEL.NE.0) IDEL3=5+(100*(WKID-1))
  896. IF (IDEL1.NE.0) CALL GDSG(IDEL1)
  897. IF (IDEL2.NE.0) CALL GDSG(IDEL2)
  898. IF (IDEL3.NE.0) CALL GDSG(IDEL3)
  899. *1093 IF (IQUALI.EQ.10) IQUALI=0
  900. *1093 IF (INUMNO.EQ.10) INUMNO=0
  901. *1093 IF (INUMEL.EQ.10) INUMEL=0
  902. *1093 ISORT=1
  903. IRESU=2
  904. C
  905. IF (VALEUR) THEN
  906. ROUT(5)=ROUT(5)*(X2-X1)/0.8+X1
  907. ROUT(6)=ROUT(6)*(Y2-Y1)/(0.8*RY/RX)+(9*Y1-Y2)/8.
  908. ELSE
  909. ROUT(5)=ROUT(5)*(X2-X1)/0.9+X1
  910. ROUT(6)=ROUT(6)*(Y2-Y1)/(0.9*RY/RX)+(10*Y1-Y2)/9.
  911. ENDIF
  912. C CALCUL DES COORDONNEES APRES LE ZOOM
  913. XMI=(SXMIN-ROUT(5))/ROUT(1)+X1
  914. XMA=(SXXAX-ROUT(5))/ROUT(1)+X1
  915. IF (VALEUR) THEN
  916. YMI=(SYMIN-ROUT(6))/ROUT(4)+(9*Y1-Y2)/8.
  917. YMA=(SYYAX-ROUT(6))/ROUT(4)+(9*Y1-Y2)/8.
  918. ELSE
  919. YMI=(SYMIN-ROUT(6))/ROUT(4)+(10*Y1-Y2)/9.
  920. YMA=(SYYAX-ROUT(6))/ROUT(4)+(10*Y1-Y2)/9.
  921. ENDIF
  922. CALL GSELNT(2)
  923. RETURN
  924. C
  925. ENTRY KCHANG(IRESU,ISORT,ICHANG,JSEG)
  926. C
  927. C VISUALISATION OU NON DU SEGMENT JSEG
  928. C POUR LES CLES QUAL, NOEUD OU ELEM
  929. C
  930. ISEG=JSEG+(100*(WKID-1))
  931. IF (ICHANG.EQ.1) THEN
  932. ICHANG=10
  933. CALL GSVIS(ISEG,0)
  934. ISORT=0
  935. RETURN
  936. ELSEIF (ICHANG.EQ.10) THEN
  937. ICHANG=1
  938. CALL GSVIS(ISEG,1)
  939. ISORT=0
  940. RETURN
  941. ENDIF
  942. ISORT=1
  943. IRESU=JSEG
  944. ICHANG=1
  945. RETURN
  946. C
  947. ENTRY KINI(IRESU,ISORT,IQUALI,INUMNO,INUMEL,XMI,XMA,YMI,YMA)
  948. C
  949. C RETOUR AU DESSIN INITIAL - SUPPRESSION DES SEGMENTS
  950. C CONCERNANT QUAL, NOEUD ET ELEM
  951. CALL GSELNT(2)
  952. PAS=1
  953. RMAT(1)=1.
  954. RMAT(2)=0.
  955. RMAT(3)=0.
  956. RMAT(4)=1.
  957. RMAT(5)=0.
  958. RMAT(6)=0.
  959. ISEG=1+(100*(WKID-1))
  960. C APPLICATION DE LA MATRICE AU SEGMENT 1
  961. CALL GSSGT(ISEG,RMAT)
  962. * IF (IDEFOR.NE.0) THEN
  963. * ISORT=0
  964. * RETURN
  965. * ENDIF
  966. IDEL1=0
  967. IDEL2=0
  968. IDEL3=0
  969. IF (IQUALI.NE.0) IDEL1=3+(100*(WKID-1))
  970. IF (INUMNO.NE.0) IDEL2=4+(100*(WKID-1))
  971. IF (INUMEL.NE.0) IDEL3=5+(100*(WKID-1))
  972. IF (IDEL1.NE.0) CALL GDSG(IDEL1)
  973. IF (IDEL2.NE.0) CALL GDSG(IDEL2)
  974. IF (IDEL3.NE.0) CALL GDSG(IDEL3)
  975. IF (IQUALI.EQ.10) IQUALI=0
  976. IF (INUMNO.EQ.10) INUMNO=0
  977. IF (INUMEL.EQ.10) INUMEL=0
  978. C RESTITUTION DES COORDONNEES
  979. XMI=SXMIN
  980. XMA=SXXAX
  981. YMI=SYMIN
  982. YMA=SYYAX
  983. CALL GSWN(2,X1,X2,Y1,Y2)
  984. ISORT=1
  985. IRESU=2
  986. C CALL GSELNT(2)
  987. RETURN
  988. C
  989. ENTRY KFLGI
  990. C
  991. C en fait c'est l'impression que l'on demande
  992. ENTRY KIMPR
  993. C
  994. C EN GKS : SAUVEGARDE DU DESSIN SUR METAFILE METAXX
  995. C AVEC XX = NUMERO DE 01 A 99
  996. C INCREMENTATION DU COMPTEUR METAFILE
  997. KMETA=KMETA+1
  998. IF (KMETA.GT.99) THEN
  999. CALL GTX(25.,6.,'COMPTEUR DE MATAFILE SUPERIEUR A 99')
  1000. CALL GTX(25.,4.,'SAUVEGARDE IMPOSSIBLE')
  1001. RETURN
  1002. ENDIF
  1003. I10=KMETA/10
  1004. IREST=KMETA-10*I10
  1005. I10=I10+1
  1006. IREST=IREST+1
  1007. STR=STR1//CARELE(I10)//CARELE(IREST)
  1008. * OPEN(UNIT=1,FILE=STR,STATUS='NEW',IOSTAT=JERROR)
  1009. * IF (JERROR.NE.0) THEN
  1010. * CALL GTX(25.,4.,'SAUVEGARDE IMPOSSIBLE')
  1011. * CALL GTX(25.,6.,'CANNOT OPEN METAFILE')
  1012. * RETURN
  1013. * ENDIF
  1014. KCON=1
  1015. METAID=1
  1016. CALL GQOPS(ISTA)
  1017. IF (ISTA.EQ.4) CALL GCLSG
  1018. CALL GOPWK(METAID,KCON,INMETA)
  1019. CALL GACWK(METAID)
  1020. CALL GSWKWN(METAID,0.,1.,0.,1.)
  1021. CALL GSWKVP(METAID,0.,0.20,0.,0.20)
  1022. ISEG=6+(100*(WKID-1))
  1023. CALL GASGWK(METAID,ISEG)
  1024. ISEG=1+(100*(WKID-1))
  1025. CALL GASGWK(METAID,ISEG)
  1026. IF (FENE) THEN
  1027. IF (VALEUR) THEN
  1028. ISEG=7+(100*(WKID-1))
  1029. CALL GASGWK(METAID,ISEG)
  1030. ELSE
  1031. ISEG=3+(100*(WKID-1))
  1032. IF (IQUALI.EQ.1) CALL GASGWK(METAID,ISEG)
  1033. ISEG=4+(100*(WKID-1))
  1034. IF (INUMNO.EQ.1) CALL GASGWK(METAID,ISEG)
  1035. ISEG=5+(100*(WKID-1))
  1036. IF (INUMEL.EQ.1) CALL GASGWK(METAID,ISEG)
  1037. ENDIF
  1038. ENDIF
  1039. CALL GQWKS(METAID,IERGK,ISTA)
  1040. IF (IERGK.EQ.0) THEN
  1041. IF (ISTA.EQ.1) CALL GDAWK(METAID)
  1042. CALL GCLWK(METAID)
  1043. ENDIF
  1044. CLOSE(UNIT=1,STATUS='KEEP')
  1045. RETURN
  1046. C
  1047. ENTRY KVAL(IRESU,ISORT,NISO)
  1048. C
  1049. RETURN
  1050. C
  1051. ENTRY KMAJSE(IMAJ,IRESU,IQUALI,INUMNO,INUMEL)
  1052. C
  1053. IF (IMAJ.EQ.1) THEN
  1054. IF (IRESU.NE.2.OR.IQUALI.NE.0.OR.INUMNO.NE.0.OR.INUMEL.NE.0)
  1055. & CALL GCLSG
  1056. ELSE
  1057. IF (IQUALI.EQ.10) IQUALI=0
  1058. IF (INUMNO.EQ.10) INUMNO=0
  1059. IF (INUMEL.EQ.10) INUMEL=0
  1060. C
  1061. IF (IRESU.LT.2.OR.IRESU.GT.5) THEN
  1062. C EFFACEMENT DU DESSIN (A VOIR)
  1063. ENDIF
  1064. C FERMETURE DE LA WORKSTATION WKID POUR POUVOIR PASSER EN MODE
  1065. C ALPHANUMERIQUE A LA FIN DU DESSIN
  1066. CALL GQOPS(ISTA)
  1067. IF (ISTA.EQ.4) CALL GCLSG
  1068. IF (ISTA.EQ.4.OR.ISTA.EQ.3) CALL GDAWK(WKID)
  1069. IF (ISTA.EQ.4.OR.ISTA.EQ.3.OR.ISTA.EQ.2) CALL GCLWK(WKID)
  1070. ENDIF
  1071. RETURN
  1072. C
  1073. ENTRY KTRANI(IANIM,NDEF)
  1074. * INITIALISATION POUR ANIMATION
  1075. * IANIM 1 ALLER SIMPLE
  1076. * IANIM 2 ALLER RETOUR
  1077. * NDEF NOMBRE D'IMAGE
  1078. RETURN
  1079. C
  1080. ENTRY KTRIMA(IDEF)
  1081. * NOUVELLE IMAGE
  1082. * IDEF NUMERO DE L'IMAGE
  1083. C
  1084. RETURN
  1085. C
  1086. C MESSAGE EN BAS DE L'ECRAN
  1087. ENTRY KTRMES(TITRE)
  1088. CALL GMSG(WKID,TITRE(1:LEN(TITRE)))
  1089. RETURN
  1090. C
  1091. C INPUT AVEC PROMPT
  1092. ENTRY KTRGET(TITRE,CARACT)
  1093. RETURN
  1094. END
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  

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