# Normal view

Before yesterdayNews from the Ada programming language world

# The problem with Ο (iv) β Fortran to Ada

18 January 2023 at 16:03

The Fortran program can also be translated to Ada. Below is the Ada program. It contains some code to output the resulting value of pi to the text file `piCalc1000ADA.txt`. In this code `a` is a βdynamicβ array of integers, which is allocated using a `declare` block. In reality `a` is just of type `pia`, declared at a later point in the program.

```with ada.Text_IO; use Ada.Text_IO;

procedure piSpigotDYN is

n, len : integer;
q, x, nines, predigit : integer;
type pia is array(integer range <>) of integer;
infp : file_type;

begin
n := 1000;
len := 10 * n / 3;

declare
a : pia(1..len);
begin

a := (1..len => 2);
nines := 0;
predigit := 0;

for j in 1..n loop
q := 0;
for i in reverse 1..len loop
x := 10 * a(i) + q * i;
a(i) := x mod (2*i-1);
q := x / (2*i-1);
end loop;
a(1) := q mod 10;
q := q / 10;
if q = 9 then
nines := nines + 1;
elsif q = 10 then
put(infp,predigit+1,width=>1);
for k in 1..nines loop
put(infp,0,width=>1);
end loop;
predigit := 0;
nines := 0;
else
put(infp,predigit,width=>1);
predigit := q;
if nines /= 0 then
for k in 1..nines loop
put(infp,9,width=>1);
nines := 0;
end loop;
end if;
end if;
end loop;
put(infp,predigit,width=>1);

close(infp);
end;
end piSpigotDYN;
```
• 18 January 2023 at 16:03