Télécharger topomodi.procedur

Retour à la liste

Numérotation des lignes :

  1. * TOPOMODI PROCEDUR FD218221 25/12/18 21:15:08 12429
  2.  
  3. ************************************************************************
  4. ** Procedure called by TOPOPTIM to check whether a variable needs to be
  5. ** updated, in order to save computation time.
  6. **
  7. ** Author:
  8. ** Guenhael Le Quilliec (LaMe - Polytech Tours)
  9. **
  10. ** Version:
  11. ** 1.0 2025/11/20 Initial version
  12. ************************************************************************
  13.  
  14. DEBP TOPOMODI tab*'TABLE' varnam*'MOT' inp ;
  15.  
  16. * Initialization
  17. * **************
  18.  
  19. ptrtab = tab.'WTABLE'.'POINTEURS' ;
  20.  
  21. * If input is a table
  22. SI (EGA (TYPE inp) 'TABLE') ;
  23.  
  24. * Collect pointeurs of each table item
  25. lstptr = LECT ;
  26. tmp = INDE inp ;
  27. REPE itr (DIME inp) ;
  28. lstptr = lstptr ET (VALE 'POIN' inp.(tmp.&itr)) ;
  29. FIN itr ;
  30.  
  31. SI (EXIS ptrtab varnam) ;
  32. * Check if any pointeur has been modified
  33. SI ((EGA (DIME ptrtab.varnam) (DIME lstptr))
  34. ET (DANS ptrtab.varnam lstptr)) ;
  35. Lupd = FAUX ;
  36. SINO ;
  37. Lupd = VRAI ;
  38. ptrtab.varnam = lstptr ;
  39. FINS ;
  40. SINO ;
  41. Lupd = VRAI ;
  42. ptrtab.varnam = lstptr ;
  43. FINS ;
  44.  
  45. SINO ;
  46.  
  47. lstptr = LECT (VALE 'POIN' inp) ;
  48.  
  49. SI (EXIS ptrtab varnam) ;
  50. * Get the number of inputs
  51. nbr = DIME ptrtab.varnam ;
  52. * Collect pointeurs of missing inputs
  53. SI (nbr > 1) ;
  54. REPE itr (nbr - 1) ;
  55. ARGU tmp ;
  56. lstptr = lstptr ET (VALE 'POIN' tmp) ;
  57. FIN itr ;
  58. FINS ;
  59. * Check if any pointeur has been modified
  60. SI (DANS ptrtab.varnam lstptr) ;
  61. Lupd = FAUX ;
  62. SINO ;
  63. Lupd = VRAI ;
  64. ptrtab.varnam = lstptr ;
  65. FINS ;
  66. SINO ;
  67. * Collect pointeurs of missing inputs
  68. REPE itr 10 ;
  69. ARGU tmp ;
  70. SI (EGA (TYPE tmp) 'ANNULE') ;
  71. QUIT itr ;
  72. SINO ;
  73. lstptr = lstptr ET (VALE 'POIN' tmp) ;
  74. FINS ;
  75. FIN itr ;
  76. Lupd = VRAI ;
  77. ptrtab.varnam = lstptr ;
  78. FINS ;
  79.  
  80. FINS ;
  81.  
  82. FINP Lupd ;
  83.  
  84.  
  85.  

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