Her is one of my programs. It is the one I would like to get to run on newer versions of Windows. It ran on whatever version preceded Vista.
I see it did not paste the way it looks in the file with indents and staggering.
Bob
program SOLARPROGA(input,output);
var
sr2mnth,sr2dte,sr2yr,sr2h,sr2m,sr2s,ramc2h,ramc2m,ramc2s,sr1mnth,sr1dte,
sr1yr,sr1h,sr1m,sr1s,ramc1h,ramc1m,ramc1s,lngthdte,lngthh,lngthm,lngths,
lngthramch,lngthramcm,lngthramcs,addh,addm,adds,ps,pm,ph,psr1dte,rarsnd,rarsnm,
ratsnd,ratsnm,ramh,ramm,rams,pramh,pramm,prams,addqh,addqm,addqs,
pqs,pqm,pqh,qramh,qramm,qrams,qprams,qpramm,qpramh,pssrd,pssrm,qd,qpm,
qpsr1dte,qpsr1mnth,qpsr1yr:integer;
part1,part2,key,part3,part4,secret,parta,partb,partc,partd,parte,partg,
gm,gs,ramf,ramf1,partq1,partq2,partq3,qm,qs,qramf,qramf1,qramc,qwork,
pssrramc,work:real;
a,a1,b,b1:boolean;
begin;
writeln('When entering data use spaces as separators.');
writeln('After all data is entered for each instruction press enter.');
writeln('Answers for time of progressed chart are in military time.');
writeln('If hours exceed 12 subtract 12 hours from the answer to get PM time.');
writeln('To exit program at anytime press Ctrl + c.');
writeln;
writeln('TO COMPUTE PRECISION PROGRESSED SOLAR RETURN:');
writeln;
writeln('Enter date of Solar Return after event in format mm dd yyyy.');
writeln('Use a space between month and date and between the date and year.');
readln(sr2mnth, sr2dte, sr2yr);
writeln;
writeln('Enter time of Solar Return after event in format hh mm ss.');
writeln('Enter hours in military time. ie add 12 hrs to pm times.');
writeln('Use a space between hours and minutes and between minutes and seconds.');
readln(sr2h, sr2m, sr2s);
writeln;
writeln('Enter Local Sidereal Time of Solar Return after event in format hh mm ss.');
writeln('As above use spaces instead of colons.');
readln(ramc2h, ramc2m, ramc2s);
writeln;
writeln('Enter Right Ascension of Solar Return Sun in format ddd mm.');
writeln('Use a space between degrees and minutes. No symbols are necessary.');
readln(rarsnd, rarsnm);
writeln;
parta := (rarsnm/60)+rarsnd;
writeln('Enter date of Solar Return before event in format mm dd yyyy.');
writeln('Use a space between the month and date and between the date and year.');
readln(sr1mnth, sr1dte, sr1yr);
writeln;
writeln('Enter time of Solar Return before event in format hh mm ss.');
writeln('Enter hours in military time. ie add 12 hrs to PM times.');
writeln('Again use spaces instead of colons.');
readln(sr1h, sr1m, sr1s);
writeln;
writeln('Enter Local Sidereal Time of Solar Return before event in format hh mm ss.');
writeln('Again use spaces instead of colons.');
readln(ramc1h, ramc1m, ramc1s);
writeln;
if sr2s < sr1s then
begin
sr2m := sr2m - 1;
sr2s := sr2s + 60;
end;
if sr2m < sr1m then
begin
sr2h:= sr2h - 1;
sr2m:= sr2m + 60;
end;
if sr2h < sr1h then
begin
sr2h := sr2h + 24;
sr2dte := sr2dte - 1;
end;
IF SR2DTE = SR1DTE THEN
BEGIN;
SR1MNTH := SR1MNTH
END;
IF SR2DTE > SR1DTE THEN
BEGIN;
SR2DTE := SR2DTE - 1;
END;
if sr2dte < sr1dte then
begin
case sr2mnth of
1,2,4,6,8,9,11 : sr2dte := sr2dte + 31;
5,7,10,12 : sr2dte := sr2dte + 30;
3 :
begin;
if (sr2yr mod 4 = 0) then
sr2dte := sr2dte + 29
else
sr2dte := sr2dte + 28;
end;
end;
end;
lngthdte := sr1dte - sr1dte; (*correct for lunars is lr2dte-lr1dte*)
lngthh := sr2h - sr1h;
lngthm := sr2m - sr1m;
lngths := sr2s - sr1s;
if ramc2s < ramc1s then
begin
ramc2m := ramc2m - 1;
ramc2s := ramc2s + 60;
end;
if ramc2m < ramc1m then
begin
ramc2h:= ramc2h - 1;
ramc2m:= ramc2m + 60;
end;
if ramc2h < ramc1h then
begin
ramc2h := ramc2h + 24;
end;
lngthramcs := ramc2s - ramc1s;
lngthramcm := ramc2m - ramc1m;
lngthramch := (ramc2h - ramc1h)+24;
part1 := (((lngthramcs/60)+lngthramcm)/60)+lngthramch;
writeln('Enter Right Ascension of transiting Sun in format ddd mm.');
writeln('Use a space between degrees and minutes. No symbols are necessary.');
readln(ratsnd, ratsnm);
writeln;
partb := (ratsnm/60)+ratsnd;
if partb < parta then
begin
partb := partb + 360;
end;
partc := partb-parta;
partd := partc/360;
secret := 0.9972620833;
parte := part1*partd;
partg := parte*secret;
addh := trunc(partg);
gm := frac(partg);
addm := trunc(gm*60);
gs := frac(gm*60);
adds := trunc(gs*60);
ps := adds+sr1s;
pm := addm+sr1m;
ph := addh+sr1h;
a := (ph>=24) and (ph<=48);
a1 := (ph>=24) and (ph>=48);
if ps>=60 then
begin
ps :=ps-60;
pm :=pm+1;
end;
if pm>=60 then
begin
pm :=pm-60;
ph :=ph+1;
end;
if PH>=48 then
begin
ph := ph-48;
sr1dte := sr1dte+2;
end;
if ph>=24 then
begin
ph := ph-24;
sr1dte :=sr1dte+1;
end;
(*if ph>48 then
begin
ph := ph-48;
sr1dte := 2+sr1dte;
end;*)
if sr2dte = sr1dte then
begin;
sr1mnth := sr1mnth
end;
if sr2dte < sr1dte then
begin;
case sr1mnth of
1,3,5,7,8,10,12 :
begin;
if sr1dte >= 32 then
sr1dte := sr1dte-31;
if sr1dte >= 32 then
sr1mnth := sr1mnth+1;
end;
4,6,9,11 :
begin;
if sr1dte = 31 then
sr1dte := sr1dte-30;
if sr1dte = 31 then
sr1mnth := sr1mnth+1;
end;
2 :
begin;
if (sr1yr mod 4 = 0) then
if sr1dte = 30 then
begin
sr1dte := sr1dte-29;
end
else
sr1dte := sr1dte-28;
(* sr1mnth := sr1mnth+1;CHANGED 1-13*)
end;
end;
end;
writeln('A CHART DONE FOR THIS DATE AND TIME WILL BE THE PPS.');
writeln;
writeln('Date and time of PPS = ',sr1mnth,'/',sr1dte,'/',sr1yr,' @ ',
ph,':',pm,':',ps);
ramh := trunc(parte);
ramf := frac(parte);
ramm := trunc(ramf*60);
ramf1 := frac(ramf*60);
rams := trunc(ramf1*60);
prams := rams+ramc1s;
pramm := ramm+ramc1m;
pramh := ramh+ramc1h;
if prams>=60 then
begin
prams :=prams-60;
pramm :=pramm+1;
end;
if pramm>=60 then
begin
pramm :=pramm-60;
pramh :=pramh+1;
end;
if pramh>=48 then
begin
pramh := pramh-48;
end;
if pramh>=24 then
begin
pramh := pramh-24;
end;
pssrramc := ((((prams/60)+pramm)/60)+pramh)*15;
pssrd := trunc(pssrramc);
work := frac(pssrramc);
pssrm := trunc(work*60);
write('LST of PPS is ',pramh,':',pramm,':',prams);
writeln(' PPS LST in Degrees and Minutes is ',pssrd,' ',pssrm);
writeln;
writeln('COMPUTATION OF PRECISION PROGRESSED SOLAR RETURN IS FINISHED.');
writeln;
writeln;
writeln('TO COMPUTE QUOTIDIAN PROGRESSED SOLAR RETURN:');
writeln;
writeln('Enter date of Solar Return before event in format mm dd yyy.');
writeln('Use a space between the month and date and between date and year.');
readln(qpsr1mnth,qpsr1dte,qpsr1yr);
writeln;
partq1 := partc/15;
partq2 := part1*partq1;
partq3 := partq1*secret;
addqh := trunc(partq3);
qm := frac(partq3);
addqm := trunc(qm*60);
qs := frac(qm*60);
addqs := trunc(qs*60);
pqs := addqs+sr1s;
pqm := addqm+sr1m;
pqh := addqh+sr1h;
b := (pqh>=24) and (pqh<=48);
b1 := (pqh>=24) and (pqh>=48);
if pqs>=60 then
begin
pqs :=pqs-60;
pqm :=pqm+1;
end;
if pqm>=60 then
begin
pqm :=pqm-60;
pqh :=pqh+1;
end;
if pqh<=24 then
begin
qpsr1dte :=qpsr1dte;
end;
if b1 then
begin
pqh := pqh-48;
qpsr1dte := qpsr1dte+2;
end;
IF PQH>=24 THEN (*if b then*CHANGED 1-13*)
begin
pqh := pqh-24;
qpsr1dte := qpsr1dte+1;
end;
if pqh>=48 then
begin
pqh := pqh-48;
qpsr1dte := 2+qpsr1dte;
end;
if sr2dte < sr1dte then
begin
case qpsr1mnth of
1,3,5,7,8,10,12 :
begin;
if qpsr1dte = 32 then
qpsr1dte := qpsr1dte-31;
if qpsr1dte = 32 then
qpsr1mnth := qpsr1mnth+1;
end;
4,6,9,11 :
begin;
if qpsr1dte = 31 then
qpsr1dte := qpsr1dte-30;
if qpsr1dte = 31 then
qpsr1mnth := qpsr1mnth+1;
end;
2 :
begin;
if (qpsr1yr mod 4 = 0) then
if qpsr1dte = 30 then
begin
qpsr1dte := qpsr1dte-29;
end
else
qpsr1dte := qpsr1dte-28;
(* qpsr1mnth := qpsr1mnth+1;CHANGED 1-13*)
end;
end;
end;
writeln('A CHART DONE FOR THIS DATE AND TIME WILL BE THE QPS.');
writeln;
writeln('Date and time of QPS is ',qpsr1mnth,'/',qpsr1dte,'/',qpsr1yr,' @ ',pqh,':',
pqm,':',pqs);
qramh := trunc(partq1);
qramf := frac(partq1);
qramm := trunc(qramf*60);
qramf1 := frac(qramf*60);
qrams := trunc(qramf1*60);
qprams := qrams+ramc1s;
qpramm := qramm+ramc1m;
qpramh := qramh+ramc1h;
if qprams>=60 then
begin
qprams :=qprams-60;
qpramm :=qpramm+1;
end;
if qpramm>=60 then
begin
qpramm :=qpramm-60;
qpramh :=qpramh+1;
end;
if qpramh>=48 then
begin
qpramh := qpramh-48;
end;
if qpramh>=24 then
begin
qpramh := qpramh-24;
end;
qramc := ((((qprams/60)+qpramm)/60)+qpramh)*15;
qd := trunc(qramc);
qwork := frac(qramc);
qpm := trunc(qwork*60);
write('LST of QPS is ',qpramh,':',qpramm,':',qprams);
writeln(' QPS LST in Degrees and Minutes is ',qd,' ',qpm);
writeln;
writeln('COMPUTATION OF THE QUOTIDIAN PROGRESSED SOLAR RETURN IS FINISHED.');
writeln('To run again press F3.');
writeln;
writeln('Copyright 1993-2001 by Robert Nicewander');
end.