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

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