File: oldloadsave.f

package info (click to toggle)
scilab 4.0-12
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 100,640 kB
  • ctags: 57,333
  • sloc: ansic: 377,889; fortran: 242,862; xml: 179,819; tcl: 42,062; sh: 10,593; ml: 9,441; makefile: 4,377; cpp: 1,354; java: 621; csh: 260; yacc: 247; perl: 130; lex: 126; asm: 72; lisp: 30
file content (140 lines) | stat: -rw-r--r-- 2,965 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
      subroutine oldload
c     Copyright INRIA/ENPC
      INCLUDE '../stack.h'
c     
      integer id(nsiz),mode(2),h(nsiz)
      integer top2,job,semi
      logical opened,eptover
      integer iadr,sadr
c
      data blank/40/,semi/43/

c     
      iadr(l)=l+l-1
      sadr(l)=(l/2)+1
c     
      lw=lstk(top+1)
      il=iadr(lstk(top))
      if(rhs.lt.1) then
         call error(42)
         return
      endif
      if(lhs.gt.1) then
         call error(41)
         return
      endif

c     opening file
      top2 = top
      top = top-rhs+1
      il=iadr(lstk(top))
      mode(1)=-101
      mode(2)=0
      call v2unit(top,mode,lunit,opened,ierr)
      if(ierr.gt.0) return
      call savlod(lunit,id,-2,top)
      if(err.gt.0) goto 39
c     
      if(rhs.gt.1) goto 40
 36   job = lstk(bot) - lstk(top)
      id(1)=blank
      call savlod(lunit,id,job,top)
      il=iadr(lstk(top))
      if(istk(il).eq.0) goto 39
      sym = semi
      rhs = 0
      call stackp(id,1)
      top = top + 1
      go to 36
 39   if(.not.opened) then
         mode(1)=0
         mode(2)=0
         call clunit(-lunit,buf,mode)
      endif
      istk(il)=0
      go to 999
c     
 40   top=top2
      sym=semi
      m=rhs
      rhs=0
      do 44 k=2,m
         job = lstk(bot) - lstk(top)
         il=iadr(lstk(top))
         if(istk(il).ne.10) then
            err=k
            call error(55)
            return
         endif
         lc=il+5+istk(il+1)*istk(il+2)
         nc=min(nlgh,istk(il+5)-1)
         call namstr(h,istk(lc),nc,0)
         call savlod(lunit,h,job,top)
         if(istk(il).eq.0) goto 39
         call stackp(h,1)
         if(k.lt.m) rewind(lunit)
 44   continue
      il=iadr(lstk(top))
      goto 39
 999  return
      end

      subroutine oldsave
c     Copyright INRIA/ENPC
      INCLUDE '../stack.h'
c     
      integer id(nsiz),mode(2)
      integer top2,job,semi
      logical opened,eptover
      integer iadr,sadr
c
      data blank/40/,semi/43/

c     
      iadr(l)=l+l-1
      sadr(l)=(l/2)+1
c     

      lw=lstk(top+1)
      il=iadr(lstk(top))
      if(rhs.lt.1) then
         call error(42)
         return
      endif
      if(lhs.gt.1) then
         call error(41)
         return
      endif

c     opening file
      top2 = top
      top = top-rhs+1
      il=iadr(lstk(top))
      mode(1)=100
      mode(2)=0
      call v2unit(top,mode,lunit,opened,ierr)
      if(ierr.gt.0) return
c     
      call savlod(lunit,id,-1,top)
      if(err.gt.0) goto 33
      if(rhs.ge.2) then
         k=top2
      else
         k=bbot-1
         if(k.lt.bot) goto 999
      endif
 32   continue
      l=k
      ilk=iadr(lstk(k))
      if(istk(ilk).lt.0) l=istk(ilk+2)
      call savlod(lunit,idstk(1,k),0,l)
      k = k-1
      if(k.ge.bot.and.rhs.eq.1 .or. k.gt.top.and.rhs.gt.1) goto 32
 33   if(.not.opened) then
         mode(1)=0
         mode(2)=0
         call clunit(-lunit,buf,mode)
      endif
      istk(il)=0
 999  return
      end