source: trunk/WIDGET/AUTOUR_de_XXX/cutcommand.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 2.6 KB
Line 
1PRO cutcommand, widcommand, toread, coef, numberofread, operation, nameexp, separator, add
2;
3; on separe widcommand en bloc separes par de + ou des -
4; par ex on peut avoir:
5; widcommand=2*champ1+champ2-8*champ9+678
6;
7; si on ne commence pas par un singne + ou -
8   case 1 of
9      strpos(widcommand, '+') EQ 0:BEGIN
10         widcommand = strmid(widcommand, 1)
11         firstsign = '+'
12      end
13      strpos(widcommand, '-') EQ 0:BEGIN
14         widcommand = strmid(widcommand, 1)
15         firstsign = '-'
16      END
17      ELSE:firstsign = '+'
18   endcase
19
20   sepplus = str_sep(widcommand, '+', /trim)
21   sepmoins = str_sep(sepplus[0], '-', /trim)
22   singleread = sepmoins
23   if n_elements(sepmoins) NE 1 then $
24    separator = [replicate('-', n_elements(sepmoins)-1), '+'] ELSE $
25    separator = ['+']
26   if n_elements(sepplus) GT 1 then $
27    for i = 1, n_elements(sepplus)-1 do begin
28      sepmoins = str_sep(sepplus[i], '-', /trim)
29      singleread = [singleread, sepmoins]
30      if n_elements(sepmoins) NE 1 then $
31       separator = [separator, replicate('-', n_elements(sepmoins)-1), '+'] ELSE $
32       separator = [separator, '+']
33   ENDFOR
34   separator = [firstsign, separator]
35;
36   numberofread = n_elements(singleread)
37; cas simple ou il n''y a qu''un champ a lire...
38   if numberofread EQ 1 and isnumber(singleread[0]) GE 1 then begin
39      coef = ''
40      numberofread = 1
41      operation = ''
42      nameexp = '???'
43      separator = ''
44      add = separator[0]+singleread[0]
45      return
46   endif
47;
48; les dernier element de singleread est-il un ordre de lecture ou une
49; constant a ajouter ???
50;
51   if isnumber(singleread[numberofread-1]) GE 1 then begin
52      add = separator[numberofread-1]+singleread[numberofread-1]
53      singleread = singleread[0:numberofread-2]
54      numberofread = numberofread-1
55   ENDIF ELSE add = ''
56;
57   IF toread GE numberofread then begin
58      rien = report('toread ne peut etre + grand que numberofread')
59      return
60   ENDIF
61;
62;   for i = 0,  n_elements(singleread)-1 do print, separator[i], ' ',  singleread[i]
63;
64   pieceofread = singleread[toread]
65   separator = separator[toread]
66;
67   case 1 of
68      strpos(pieceofread, '*') NE -1:operation = '*'
69      strpos(pieceofread, '/') NE -1:operation = '/'
70      ELSE:operation = ''
71   ENDCASE
72   if operation NE '' then begin
73      finalread = str_sep(pieceofread, operation, /trim)
74      coef = finalread[0]
75      nameexp = finalread[1]
76   ENDIF ELSE BEGIN
77      if toread EQ 0 AND firstsign EQ '-' then begin
78      coef = '-1'
79      operation = '*'
80      ENDIF ELSE coef = ''
81      nameexp = pieceofread
82   ENDELSE
83;
84;
85   return
86end
Note: See TracBrowser for help on using the repository browser.