Télécharger Petit_Exemple.dgibi

Retour à la liste

Numérotation des lignes :

  1. * Fichier : Petit_Exemple.dgibi (petit exemple d'utilisation de 'EXTERN')
  2.  
  3. ************************************************************************
  4. ************************************************************************
  5.  
  6. ************************************************************************
  7. * NOM : EXTE
  8. * DESCRIPTION : Teste l'operateur EXTE (Non portable...)
  9. *
  10. *
  11. *
  12. * LANGAGE : GIBIANE-CAST3M
  13. ************************************************************************
  14.  
  15. 'OPTION' 'ECHO' 0 ;
  16. 'MESS' ;
  17. 'MESS' 'Le present exemple est a but purement illustratif !' ;
  18. 'MESS' 'Les differents resultats obtenus ne sont pas garantis.' ;
  19. 'MESS' ;
  20. 'MESS' 'Les elements fournis ici sont a adapter en fonction ' ;
  21. 'MESS' 'du(des) programme(s) externe(s) utilise(s) et du systeme' ;
  22. 'MESS' ;
  23.  
  24. * Determination de la version de Cast3M (annuelle ou du jour=DEV) :
  25. str_ver = 'VENV' 'CASTEM_VERSION' ;
  26. * Cette variable d'environnement existe pour les versions annuelles pas trop anciennes
  27. 'SI' ('EGA' str_ver ' ') ;
  28. str_ver = 'MOT' 'DEV' ;
  29. 'FINSI' ;
  30.  
  31. * Determination du systeme :
  32. str_os = 'VENV' 'CASTEM_PLATEFORME' ;
  33. * Cette variable d'environnement existe pour les versions annuelles pas trop anciennes
  34. 'SI' ('NEG' str_os ' ') ;
  35. 'SI' ('EGA' ('EXTRAIRE' str_os 1 3) 'WIN') ;
  36. str_os = 'MOT' 'Windows' ;
  37. 'SINON' ;
  38. str_os = 'MOT' 'Linux' ;
  39. 'FINSI' ;
  40. 'SINON' ;
  41. * On cherche une variable definie uniquement sous Windows :
  42. str_z = 'VENV' 'OS' ;
  43. 'SI' ('EGA' str_z 'Windows_NT') ;
  44. str_os = 'MOT' 'Windows' ;
  45. 'SINON' ;
  46. str_os = 'MOT' 'Linux' ;
  47. tab_z = 'EXTERN' 'uname' ;
  48. 'SI' ('NEG' tab_z.1 str_os) ;
  49. str_os = 'MOT' 'Autre' ;
  50. 'FINSI' ;
  51. 'FINSI' ;
  52. 'FINSI' ;
  53. 'MESS' ;
  54. 'MESS' 'TEST sur SYSTEME' ' ' str_os ' avec Cast3M version' ' ' str_ver ;
  55.  
  56. b_err = FAUX ;
  57.  
  58. ** 1ER TEST :
  59. 'MESS' ;
  60. * Choix de la commande selon le systeme (ici c'est la meme)
  61. 'SI' ('EGA' str_os 'Windows') ;
  62. cmd_z = 'MOT' 'ECHO' ;
  63. 'SINON' ;
  64. cmd_z = 'MOT' 'echo' ;
  65. 'FINSI' ;
  66.  
  67. * Attention l_z ne doit pas commencer par un chiffre sinon le resultat de echo
  68. * sera interprete comme un flottant, ce que l'on ne veut pas ici !
  69. l_z = 'MOT' 'Z2345678901234567890123456789012345678901234567890123456789012345678901@345678901234567890123456789C' ;
  70. lg_z = 'DIME' l_z ;
  71. list l_z ; list lg_z ;
  72. cmd_z = 'CHAINE' cmd_z ' ' l_z ;
  73. list cmd_z ;
  74.  
  75. tab_z = 'EXTERN' cmd_z ;
  76.  
  77. 'MESS' ;
  78. 'SI' ('NEG' ('TYPE' tab_z) 'TABLE') ;
  79. 'MESS' 'Erreur lors de l execution de la commande' ;
  80. 'MESS' 'On n a pas de TABLE de resultat' ;
  81. b_err = VRAI ;
  82. 'FINSI' ;
  83. list tab_z ;
  84. 'MESS' ;
  85. 'SI' ('NEG' ('DIME' tab_z) 1) ;
  86. 'MESS' 'Erreur lors de l execution de la commande' ;
  87. 'MESS' 'On attendait un seul retour' ;
  88. b_err = VRAI ;
  89. 'FINSI' ;
  90. obj_z = tab_z. 1 ;
  91. 'SI' ('NEG' ('TYPE' obj_z) 'MOT') ;
  92. 'MESS' 'Erreur lors de l execution de la commande' ;
  93. 'MESS' 'On attendait un MOT dans la table pour l indice 1' ;
  94. b_err = VRAI ;
  95. 'FINSI' ;
  96. list obj_z ;
  97. 'SI' ('NEG' ('DIME' obj_z) lg_z) ;
  98. 'MESS' 'Erreur lors de l execution de la commande' ;
  99. 'MESS' 'On attendait a un MOT de longueur' ' ' lg_z ;
  100. b_err = VRAI ;
  101. 'FINSI' ;
  102.  
  103. ** 2e TEST :
  104. 'MESS' ;
  105. * Choix de la commande selon le systeme :
  106. 'SI' ('EGA' str_os 'Windows') ;
  107. cmd_z = 'MOT' 'DIR /B' ;
  108. 'SINON' ;
  109. cmd_z = 'MOT' 'ls' ;
  110. 'FINSI' ;
  111. list cmd_z ;
  112.  
  113. tab_z = 'EXTERN' cmd_z ;
  114.  
  115. 'SI' ('NEG' ('TYPE' tab_z) 'TABLE') ;
  116. 'MESS' 'Erreur lors de l execution de la commande' ;
  117. 'MESS' 'On n a pas de TABLE de resultat' ;
  118. b_err = VRAI ;
  119. 'FINSI' ;
  120. list tab_z ;
  121.  
  122. ** 3e TEST :
  123. * Test purement Linux a ce jour :
  124. 'SI' (('EGA' str_os 'Linux') 'OU' ('EGA' str_os 'Autre')) ;
  125. 'MESS' ;
  126. arg_z = 'TABLE' ;
  127. * une addition entre entiers :
  128. arg_z. 1 = 1 ; arg_z. 2 = 'MOT' '+' ; arg_z. 3 = 2 ; arg_z. 4 = 'MOT' 'RC' ;
  129. * une multiplication entre entiers :
  130. arg_z. 5 = 3 ; arg_z. 6 = 'MOT' '*' ; arg_z. 7 = 6 ; arg_z. 8 = 'MOT' 'RC' ;
  131. * une addition avec un flottant mais
  132. * Le resultat donne par 'bc' sera faux, car il interprete le FLOTTANT .532E+03 envoye par Cast3M comme 0.532+3 !
  133. * Ici on s'assure que le FLOTTANT (532.) est bien transmis.
  134. arg_z. 9 = 532. ; arg_z. 10 = 'MOT' '+' ; arg_z. 11 = 0 ; arg_z. 12 = 'MOT' 'RC' ;
  135. * Pour avoir un resultat correct avec 'bc' et des FLOTTANTS, on les envoie sous forme de CHAINE avec un FORMAT Fx.y sans EXPOSANT !
  136. arg_z. 13 = 'CHAINE' 'FORMAT' '(F10.4)' 532. ; arg_z. 14 = 'MOT' '+' ; arg_z. 15 = 0 ; arg_z. 16 = 'MOT' 'RC' ;
  137. str_z = 'CHAINE' 'FORMAT' '(1PE12.5)' 532. ; 'COMM' 'Pour remettre le format des flottants par defaut dans CHAINE' ;
  138. * Une petite division (entiere car scale=0 par defaut)
  139. arg_z. 17 = 1 ; arg_z. 18 = 'MOT' '/' ; arg_z. 19 = 6 ; arg_z. 20 = 'MOT' 'RC' ;
  140. ** arg_z. 17 = 1 ; arg_z. 18 = 'MOT' '/' ; arg_z. 19 = 'MOT' 'RC' ; arg_z. 20 = 'MOT' 'RC' ;
  141. * Une petite division :
  142. arg_z. 21 = 'MOT' 'scale = 7' ; arg_z. 22 = 'MOT' 'RC' ;
  143. arg_z. 23 = 1 ; arg_z. 24 = 'MOT' '/' ; arg_z. 25 = 6 ; arg_z. 26 = 'MOT' 'RC' ;
  144. * Une petite operation complexe
  145. arg_z. 27 = 'MOT' '1. + 2 + 53.2' ; arg_z. 28 = 'MOT' 'RC' ;
  146. arg_z. 29 = 'MOT' 'quit' ; arg_z. 30 = 'MOT' 'RC' ;
  147.  
  148. cmd_z = 'MOT' 'bc' ;
  149. list cmd_z ; list arg_z ;
  150.  
  151. tab_z = 'EXTERN' cmd_z arg_z ;
  152.  
  153. 'SI' ('NEG' ('TYPE' tab_z) 'TABLE') ;
  154. 'MESS' 'Erreur lors de l execution de la commande' ;
  155. 'MESS' 'On n a pas de TABLE de resultat' ;
  156. b_err = VRAI ;
  157. 'FINSI' ;
  158. list tab_z ;
  159. 'MESS' ;
  160. res_z = 7 ;
  161. dim_z = 'DIME' tab_z;
  162. 'SI' ('NEG' ('DIME' tab_z) res_z) ;
  163. 'MESS' 'Erreur lors de l execution de la commande' ;
  164. 'MESS' 'On attendait' ' ' res_z ' retours' ;
  165. b_err = VRAI ;
  166. 'SINON';
  167. i_z = 1 ; typ_z = 'MOT' 'ENTIER' ; res_z = 3 ;
  168. obj_z = tab_z. i_z ;
  169. 'SI' ('EGA' ('TYPE' obj_z) typ_z) ;
  170. 'SI' ('EGA' obj_z res_z) ;
  171. 'MESS' 'Retour' ' ' i_z ' : VALIDE :' ' ' typ_z ' - valeur' ' ' res_z ;
  172. 'SINON' ;
  173. 'MESS' 'Erreur lors de l execution de la commande' ;
  174. 'MESS' 'Resultat de type correct mais de valeur incorrecte' ' ' res_z ;
  175. b_err = VRAI ;
  176. 'FINSI' ;
  177. 'SINON' ;
  178. 'MESS' 'Erreur lors de l execution de la commande' ;
  179. 'MESS' 'On attendait un' ' ' typ_z ' dans la table pour l indice' ' ' i_z ;
  180. b_err = VRAI ;
  181. 'FINSI' ;
  182. i_z = 2 ; typ_z = 'MOT' 'ENTIER' ; res_z = 18 ;
  183. obj_z = tab_z. i_z ;
  184. 'SI' ('EGA' ('TYPE' obj_z) typ_z) ;
  185. 'SI' ('EGA' obj_z res_z) ;
  186. 'MESS' 'Retour' ' ' i_z ' : VALIDE :' ' ' typ_z ' - valeur' ' ' res_z ;
  187. 'SINON' ;
  188. 'MESS' 'Erreur lors de l execution de la commande' ;
  189. 'MESS' 'Resultat de type correct mais de valeur incorrecte' ' ' res_z ;
  190. b_err = VRAI ;
  191. 'FINSI' ;
  192. 'SINON' ;
  193. 'MESS' 'Erreur lors de l execution de la commande' ;
  194. 'MESS' 'On attendait un' ' ' typ_z ' dans la table pour l indice' ' ' i_z ;
  195. b_err = VRAI ;
  196. 'FINSI' ;
  197. i_z = 3 ; typ_z = 'MOT' 'FLOTTANT' ; res_z = 3.532 ;
  198. obj_z = tab_z. i_z ;
  199. 'SI' ('EGA' ('TYPE' obj_z) typ_z) ;
  200. 'SI' ('EGA' obj_z res_z 1.E-12) ;
  201. 'MESS' 'Retour' ' ' i_z ' : VALIDE :' ' ' typ_z ' - valeur' ' ' res_z ;
  202. 'SINON' ;
  203. 'MESS' 'Erreur lors de l execution de la commande' ;
  204. 'MESS' 'Resultat de type correct mais de valeur incorrecte' ' ' res_z ;
  205. b_err = VRAI ;
  206. 'FINSI' ;
  207. 'SINON' ;
  208. 'MESS' 'Erreur lors de l execution de la commande' ;
  209. 'MESS' 'On attendait un' ' ' typ_z ' dans la table pour l indice' ' ' i_z ;
  210. b_err = VRAI ;
  211. 'FINSI' ;
  212. i_z = 4 ; typ_z = 'MOT' 'FLOTTANT' ; res_z = 532. ;
  213. obj_z = tab_z. i_z ;
  214. 'SI' ('EGA' ('TYPE' obj_z) typ_z) ;
  215. 'SI' ('EGA' obj_z res_z 1.E-12) ;
  216. 'MESS' 'Retour' ' ' i_z ' : VALIDE :' ' ' typ_z ' - valeur' ' ' res_z ;
  217. 'SINON' ;
  218. 'MESS' 'Erreur lors de l execution de la commande' ;
  219. 'MESS' 'Resultat de type correct mais de valeur incorrecte' ' ' res_z ;
  220. b_err = VRAI ;
  221. 'FINSI' ;
  222. 'SINON' ;
  223. 'MESS' 'Erreur lors de l execution de la commande' ;
  224. 'MESS' 'On attendait un' ' ' typ_z ' dans la table pour l indice' ' ' i_z ;
  225. b_err = VRAI ;
  226. 'FINSI' ;
  227. i_z = 5 ; typ_z = 'MOT' 'ENTIER' ; res_z = 0 ;
  228. obj_z = tab_z. i_z ;
  229. 'SI' ('EGA' ('TYPE' obj_z) typ_z) ;
  230. 'SI' ('EGA' obj_z res_z) ;
  231. 'MESS' 'Retour' ' ' i_z ' : VALIDE :' ' ' typ_z ' - valeur' ' ' res_z ;
  232. 'SINON' ;
  233. 'MESS' 'Erreur lors de l execution de la commande' ;
  234. 'MESS' 'Resultat de type correct mais de valeur incorrecte' ' ' res_z ;
  235. b_err = VRAI ;
  236. 'FINSI' ;
  237. 'SINON' ;
  238. 'MESS' 'Erreur lors de l execution de la commande' ;
  239. 'MESS' 'On attendait un' ' ' typ_z ' dans la table pour l indice' ' ' i_z ;
  240. b_err = VRAI ;
  241. 'FINSI' ;
  242. i_z = 6 ; typ_z = 'MOT' 'FLOTTANT' ; res_z = 0.16666660 ;
  243. obj_z = tab_z. i_z ;
  244. 'SI' ('EGA' ('TYPE' obj_z) typ_z) ;
  245. 'SI' ('EGA' obj_z res_z 1.E-12) ;
  246. 'MESS' 'Retour' ' ' i_z ' : VALIDE :' ' ' typ_z ' - valeur' ' ' res_z ;
  247. 'SINON' ;
  248. 'MESS' 'Erreur lors de l execution de la commande' ;
  249. 'MESS' 'Resultat de type correct mais de valeur incorrecte' ' ' res_z ;
  250. b_err = VRAI ;
  251. 'FINSI' ;
  252. 'SINON' ;
  253. 'MESS' 'Erreur lors de l execution de la commande' ;
  254. 'MESS' 'On attendait un' ' ' typ_z ' dans la table pour l indice' ' ' i_z ;
  255. b_err = VRAI ;
  256. 'FINSI' ;
  257. i_z = 7 ; typ_z = 'MOT' 'FLOTTANT' ; res_z = 56.2 ;
  258. obj_z = tab_z. i_z ;
  259. 'SI' ('EGA' ('TYPE' obj_z) typ_z) ;
  260. 'SI' ('EGA' obj_z res_z 1.E-12) ;
  261. 'MESS' 'Retour' ' ' i_z ' : VALIDE :' ' ' typ_z ' - valeur' ' ' res_z ;
  262. 'SINON' ;
  263. 'MESS' 'Erreur lors de l execution de la commande' ;
  264. 'MESS' 'Resultat de type correct mais de valeur incorrecte' ' ' res_z ;
  265. b_err = VRAI ;
  266. 'FINSI' ;
  267. 'SINON' ;
  268. 'MESS' 'Erreur lors de l execution de la commande' ;
  269. 'MESS' 'On attendait un' ' ' typ_z ' dans la table pour l indice' ' ' i_z ;
  270. b_err = VRAI ;
  271. 'FINSI' ;
  272. 'FINSI' ;
  273. 'FINSI' ;
  274.  
  275. * test PV du bug 11850
  276. 'SI' ('EGA' str_os 'Windows');
  277. cmd_z = 'MOT' 'echo 0 && echo 1';
  278. 'SINO';
  279. cmd_z = 'MOT' 'echo 0 ; echo 1';
  280. 'FINS';
  281.  
  282. tab_z = 'EXTERN' cmd_z ;
  283.  
  284. 'SI' ('NEG' ('TYPE' tab_z) 'TABLE') ;
  285. 'MESS' 'Erreur lors de l execution de la commande' ;
  286. 'MESS' 'On n a pas de TABLE de resultat' ;
  287. b_err = VRAI ;
  288. 'FINSI' ;
  289. list tab_z ;
  290. 'MESS' ;
  291. res_z = 2 ;
  292. dim_z = 'DIME' tab_z;
  293. 'SI' ('NEG' ('DIME' tab_z) res_z) ;
  294. 'MESS' 'Erreur lors de l execution de la commande' ;
  295. 'MESS' 'On attendait' ' ' res_z ' retours' ;
  296. b_err = VRAI ;
  297. 'SINON';
  298. i_z = 1 ; typ_z = 'MOT' 'ENTIER' ; res_z = 0 ;
  299. obj_z = tab_z. i_z ;
  300. 'SI' ('EGA' ('TYPE' obj_z) typ_z) ;
  301. 'SI' ('EGA' obj_z res_z) ;
  302. 'MESS' 'Retour' ' ' i_z ' : VALIDE :' ' ' typ_z ' - valeur' ' ' res_z ;
  303. 'SINON' ;
  304. 'MESS' 'Erreur lors de l execution de la commande' ;
  305. 'MESS' 'Resultat de type correct mais de valeur incorrecte' ' ' res_z ;
  306. b_err = VRAI ;
  307. 'FINSI' ;
  308. 'SINON' ;
  309. 'MESS' 'Erreur lors de l execution de la commande' ;
  310. 'MESS' 'On attendait un' ' ' typ_z ' dans la table pour l indice' ' ' i_z ;
  311. b_err = VRAI ;
  312. 'FINSI' ;
  313. i_z = 2 ; typ_z = 'MOT' 'ENTIER' ; res_z = 1 ;
  314. obj_z = tab_z. i_z ;
  315. 'SI' ('EGA' ('TYPE' obj_z) typ_z) ;
  316. 'SI' ('EGA' obj_z res_z) ;
  317. 'MESS' 'Retour' ' ' i_z ' : VALIDE :' ' ' typ_z ' - valeur' ' ' res_z ;
  318. 'SINON' ;
  319. 'MESS' 'Erreur lors de l execution de la commande' ;
  320. 'MESS' 'Resultat de type correct mais de valeur incorrecte' ' ' res_z ;
  321. b_err = VRAI ;
  322. 'FINSI' ;
  323. 'SINON' ;
  324. 'MESS' 'Erreur lors de l execution de la commande' ;
  325. 'MESS' 'On attendait un' ' ' typ_z ' dans la table pour l indice' ' ' i_z ;
  326. b_err = VRAI ;
  327. 'FINSI' ;
  328. 'FINSI' ;
  329.  
  330. 'SI' b_err ; 'ERREUR' 5 ; 'FINSI' ;
  331.  
  332. 'FIN' ;
  333.  
  334.  
  335.  

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