home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
fortran
/
compiler
/
sbm
/
testall.for
< prev
next >
Wrap
Text File
|
1991-01-07
|
3KB
|
98 lines
- Program to test SBM Fortran compiler.
/ exclude rtl
- Here we declare a character array and initialize it to whatever size the
- data requires.
character outbuf/esc,'[2J',cr,lf,' -- Testing ---',cr,lf
'1. UNFORMATTED OUTPUT: write(*) outbuf',cr,lf
' (also data statement to set the output)',cr,lf,lf,0/
write(*) outbuf ; display the array.
data command/'now is the-time',0/
parse_only command,outbuf,'-'
write(*,*) '2. This is LIST DIRECTED OUTPUT TO CONSOLE'
write(*,*) '' ; line-feed
- now test formatted output.
integer*2 int2_1, int2_2, int2_3, int2_4, int2_5
- Since the variables were declared without any intervening data, they
- can be initialized as though they were an array.
data int2_1 /1,23,456,7890,32767/
write(*,1012) int2_1, int2_2, int2_3, int2_4, int2_5
1012 format('3. FORMATTED OUTPUT ',i2,i3,i4,i5, i30, ' maximum')
- notice how we can insert long skips ^.
- one should never need the 'x' descriptor on output.
- Standard fortran works this way too.
- try some tricky subscripting and display max negative number.
data int2_5/-32768/
m=1
write(*,1012) int2_1(m), int2_2, int2_1(m+2), int2_5(m-1), int2_5
write(*,*) '' ; xtra line-feed
- disk output....
write(*,*) '4. Testing disk output.'
write(*,*) ' Do-loops are also tested here.'
open(16,file='testall.dat',status='new',alias=memfile)
if(cy) call exit
do 809 counter=1,10
write(16,309) counter
309 format('test output record',i3)
809 continue
write(*,*) ' 10 records written to "testall.dat".'
close 16
write(*,*) ' "testall.dat" closed.'
write(*,*) '' ; line-feed
- appending disk data to an existing file.
open(17,file='e:testall.dat',status='append')
write(*,*) ' "testall.dat" re-opened for appending.'
do 909 counter=1,4
write(17,409) counter
409 format('appended record',i3)
909 continue
write(*,*) ' 4 records appended.'
write(*,*) '' ; line-feed
--------------------------------------------------------
- read from an internal file.
- also called a re-read. with it you can read a record as many times
- as you wish, using a different format each time. above, notice that
- we assigned an alias to unit 16. In this buffer area, we still have
- the last record that was written with format 309.
integer lastnum
read(memfile,160) lastnum
160 format(19x,i3)
add lastnum,2000 ; test the 'add' statement.
write(*,161) lastnum
161 format('5. Reading from internal file, should be 2010, have',i5/)
- using the dollar descriptor for console message.
write(*,*) 'press any key to continue ',$
- get next character from console
wait (you could also use 'nexchar' here)
data outbuf/esc,'[2J',0/
write(*) outbuf ; clear the screen
write(*,*) '6. Testing assign statements and subscripts'
- also notice the nested 'do'.
data outbuf/' abcdefghijklmnopqrstuvwxyz 0123456789',cr,lf,0/
counter=4
do 211 k=1,4
do 200 j=4,100
outbuf(j)=outbuf(j+1)
if(al.eq.0) goto 201
200 continue
201 write(*) outbuf
211 continue
write(*,*) '' ; line-feed
data outbuf/cr,lf,' -- Testing Completed ---',cr,lf,lf,0/
write(*) outbuf
call exit
end