Skip to content

Commit 46daac8

Browse files
author
remislp
committed
First commit of all DC FORTRAN source code.
1 parent fd2e008 commit 46daac8

File tree

2,767 files changed

+1150480
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,767 files changed

+1150480
-0
lines changed

Fort90/AFIXR.FOR

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
function AFIXR(x)
2+
c To round a real value correctly (like ifixr but result real)
3+
x1=x+sign(0.5,x)
4+
afixr=x1-amod(x1,1.)
5+
return
6+
end
7+

Fort90/ALPHA.FOR

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
program ALPHA
2+
c To reset screen to alpha mode (eg after crash of program while
3+
c in graphics)
4+
c call VIDEOMOD(3) !utility lib- this makes graph go for good!
5+
c For Toshiba VIDEOTYP()=18 for graphics mode, =3 for alpha mode
6+
integer*2 i1,i2,videotyp
7+
c
8+
i1=videotyp()
9+
c if(videotyp().eq.18) call VIDEOMOD(3)
10+
call VIDEOMOD(3)
11+
i2=videotyp()
12+
print 1,i1,i2
13+
1 format(' video mode changed from ',i3,' to ',i3)
14+
c
15+
end
16+
17+

Fort90/ARLY.FOR

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
program arly
2+
real a(10)
3+
n=10
4+
a(1)=1.1
5+
a(2)=1.
6+
a(3)=1.1
7+
a(4)=2.3
8+
a(5)=2.3
9+
a(6)=3.
10+
a(7)=3.
11+
a(8)=-1.
12+
a(9)=1.
13+
a(10)=1.1
14+
i=1
15+
m=n
16+
do while(i.le.m)
17+
k=i+1
18+
do while(k.le.m)
19+
if(a(i).eq.a(k)) then
20+
do while(a(k).eq.a(m).and.m.gt.k)
21+
m=m-1
22+
enddo
23+
t=a(k)
24+
a(k)=a(m)
25+
a(m)=t
26+
m=m-1
27+
endif
28+
k=k+1
29+
enddo
30+
i=i+1
31+
enddo
32+
print*,'result:',m
33+
do j=1,m
34+
print*,a(j)
35+
enddo
36+
print*,'z='
37+
read*,z
38+
k=0
39+
if(abs(z).gt.1.) then
40+
y=abs(z)
41+
do while(y.gt.1)
42+
y=y/10.
43+
k=k+1
44+
enddo
45+
a1=y*10.
46+
if (z.lt.0.) a1=-y*10.
47+
b1= k-1
48+
goto 1
49+
else if(abs(z).gt.0.and.abs(z).lt.1) then
50+
y=abs(z)
51+
do while(y.lt.1)
52+
y=y*10.
53+
k=k+1
54+
enddo
55+
a1=y
56+
if (z.lt.0.) a1=-y
57+
b1=-k
58+
goto 1
59+
endif
60+
1 print*,a1,' ',b1
61+
end

Fort90/ARMOV.FOR

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
program armov
2+
integer a(10)
3+
n=10
4+
a(1)=2
5+
a(2)=2
6+
a(3)=3
7+
a(4)=3
8+
a(5)=7
9+
a(6)=3
10+
a(7)=4
11+
a(8)=4
12+
a(9)=1
13+
a(10)=1
14+
j=1
15+
do i=1,n-1
16+
do k=i+1,n
17+
if(a(i).eq.a(k)) a(i)=-100
18+
enddo
19+
enddo
20+
do i=1,n
21+
print*,a(i)
22+
enddo
23+
do i=1,n
24+
if(a(i).ne.-100) then
25+
a(j)=a(i)
26+
j=j+1
27+
endif
28+
enddo
29+
m=j-1
30+
print*,'result:'
31+
do j=1,m
32+
print*,a(j)
33+
enddo
34+
end

Fort90/ARMOV1.FOR

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
program armov1
2+
integer a(10)
3+
n=10
4+
a(1)=1
5+
a(2)=1
6+
a(3)=1
7+
a(4)=2
8+
a(5)=2
9+
a(6)=3
10+
a(7)=3
11+
a(8)=1
12+
a(9)=1
13+
a(10)=1
14+
j=1
15+
do i=1,n
16+
do k=i,n
17+
if((k.ne.i).and.(a(i).eq.a(k))) a(k)=-100
18+
enddo
19+
if(a(i).ne.-100) then
20+
a(j)=a(i)
21+
j=j+1
22+
endif
23+
enddo
24+
m=j-1
25+
do j=1,m
26+
print*,a(j)
27+
enddo
28+
end

Fort90/ARMY.FOR

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
program army
2+
real a(10)
3+
n=10
4+
a(1)=2.1
5+
a(2)=2.2
6+
a(3)=3.3
7+
a(4)=3.3
8+
a(5)=7.
9+
a(6)=3.3
10+
a(7)=4.
11+
a(8)=4.
12+
a(9)=1.
13+
a(10)=8.
14+
j=1
15+
do i=1,n-1
16+
do k=i+1,n
17+
if(a(i).eq.a(k)) a(i)=-100
18+
enddo
19+
if(a(i).ne.-100) then
20+
a(j)=a(i)
21+
j=j+1
22+
endif
23+
enddo
24+
m=j-1
25+
print*,'result:'
26+
do j=1,m
27+
print*,a(j)
28+
enddo
29+
end

Fort90/ARRAYD.FOR

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
SUBROUTINE ARRAYD(MODE,I,J,N,M,S,D)
2+
c dimension S(100),D(100)
3+
c dimension S(400),D(400)
4+
dimension S(n*m),D(n*m)
5+
DOUBLE PRECISION S,D
6+
C#### MODIF 02/20/90 04:17pm for 20x20 arrays
7+
C ..................................................................
8+
C
9+
C SUBROUTINE ARRAYD
10+
C ***dimension DOUBLE PRECISION S AND D ARGUMENTS- CAN BE THE SAME
11+
C PURPOSE
12+
C CONVERT DATA ARRAY FROM SINGLE TO DOUBLE DIMENSION OR VICE
13+
C VERSA. THIS SUBROUTINE IS USED TO LINK THE USER PROGRAM
14+
C WHICH HAS DOUBLE DIMENSION ARRAYS AND THE SSP SUBROUTINES
15+
C WHICH OPERATE ON ARRAYS OF DATA IN A VECTOR FASHION.
16+
C
17+
C USAGE
18+
C CALL ARRAYD(MODE,I,J,N,M,S,D)
19+
C
20+
C DESCRIPTION OF PARAMETERS
21+
C MODE - CODE INDICATING TYPE OF CONVERSION
22+
C 1 - FROM SINGLE TO DOUBLE DIMENSION
23+
C 2 - FROM DOUBLE TO SINGLE DIMENSION
24+
C I - NUMBER OF ROWS IN ACTUAL DATA MATRIX
25+
C J - NUMBER OF COLUMNS IN ACTUAL DATA MATRIX
26+
C N - NUMBER OF ROWS SPECIFIED FOR THE MATRIX D IN
27+
C DIMENSION STATEMENT
28+
C M - NUMBER OF COLUMNS SPECIFIED FOR THE MATRIX D IN
29+
C DIMENSION STATEMENT
30+
C S - IF MODE=1, THIS VECTOR IS INPUT WHICH CONTAINS THE
31+
C ELEMENTS OF A DATA MATRIX OF SIZE I BY J. COLUMN I+1
32+
C OF DATA MATRIX FOLLOWS COLUMN I, ETC. IF MODE=2,
33+
C THIS VECTOR IS OUTPUT REPRESENTING A DATA MATRIX OF
34+
C SIZE I BY J CONTAINING ITS COLUMNS CONSECUTIVELY.
35+
C THE LENGTH OF S IS IJ, WHERE IJ=I*J.
36+
C D - IF MODE=1, THIS MATRIX OF SIZE N BY M IS OUTPUT,
37+
C CONTAINING A DATA MATRIX OF SIZE I BY J IN THE FIRST
38+
C I ROWS AND J COLUMNS. IF MODE=2, THIS N BY M MATRIX
39+
C IS INPUT CONTAINING A DATA MATRIX OF SIZE I BY J IN
40+
C THE FIRST I ROWS AND J COLUMNS.
41+
C
42+
C REMARKS
43+
C VECTOR S CAN BE IN THE SAME LOCATION AS MATRIX D. VECTOR S
44+
C IS REFERRED AS A MATRIX IN OTHER SSP ROUTINES, SINCE IT
45+
C CONTAINS A DATA MATRIX.
46+
C THIS SUBROUTINE CONVERTS ONLY GENERAL DATA MATRICES (STORAGE
47+
C MODE OF 0).
48+
C
49+
C SUBROUTINES AND FUNCTION SUBROUTINES REQUIRED
50+
C NONE
51+
C
52+
C METHOD
53+
C REFER TO THE DISCUSSION ON VARIABLE DATA SIZE IN THE SECTION
54+
C DESCRIBING OVERALL RULES FOR USAGE IN THIS MANUAL.
55+
C
56+
C ..................................................................
57+
C
58+
C
59+
c do 500 k=1,25
60+
c500 print *,k,d(k)
61+
C
62+
NI=N-I
63+
C
64+
C TEST TYPE OF CONVERSION
65+
C
66+
IF(MODE-1) 100, 100, 120
67+
C
68+
C CONVERT FROM SINGLE TO DOUBLE DIMENSION
69+
C
70+
100 IJ=I*J+1
71+
NM=N*J+1
72+
DO 110 K=1,J
73+
NM=NM-NI
74+
DO 110 L=1,I
75+
IJ=IJ-1
76+
NM=NM-1
77+
110 D(NM)=S(IJ)
78+
GO TO 140
79+
C
80+
C CONVERT FROM DOUBLE TO SINGLE DIMENSION
81+
C
82+
120 IJ=0
83+
NM=0
84+
DO 130 K=1,J
85+
DO 125 L=1,I
86+
IJ=IJ+1
87+
NM=NM+1
88+
125 S(IJ)=D(NM)
89+
130 NM=NM+NI
90+
C
91+
140 continue
92+
c do 501 k=1,25
93+
c501 print *,k,s(k)
94+
c
95+
RETURN
96+
END

0 commit comments

Comments
 (0)