File XYZ434.PS

Directory of image this file is from
This file as a plain text file

PROGRAM XYZ (IN,OUT);
CONST
  PI=3.1415926536;BOG=0.01745329252;GEOB=0.8901179185;
VAR
  D,M,J1,DA,DE,I,S:INTEGER;
  JD,D1,T,OMEGA,EXZ,EKL,MA,E,EN,R,V,X,Y,Z,DEC,RA,TB,SA,SU,KUL,VO:REAL;

FUNCTION TAN (X:REAL):REAL;
  BEGIN
    TAN:=SIN (X)/COS (X);
  END;

FUNCTION ARCSIN (X:REAL):REAL;
BEGIN
  ARCSIN:=ARCTAN (X/SQRT (-X*X+1));
END;

FUNCTION ARCCOS (X:REAL):REAL;
BEGIN
  ARCCOS:=-ARCSIN (X)+PI/2;
END;

FUNCTION JULDAT (D,M,J:INTEGER):REAL;
VAR
  Y,N:INTEGER;
BEGIN
  J:=J+1900;
  Y:=J;N:=M+1;
  IF N<=3 THEN BEGIN Y:=J-1;N:=N+12 END;
  JULDAT:=TRUNC(365.25*Y)+TRUNC (30.6001*N)+D+1720981.5;
END;

FUNCTION INTERVALL (X,UNTEN,OBEN:REAL):REAL;
BEGIN
   WHILE(X>OBEN) DO X:=X-OBEN;
   WHILE(X<UNTEN) DO X:=X+OBEN;
  INTERVALL:=X;
END;

(*======= Hauptprogramm =======*)
BEGIN
  READLN;READ(DA,M,J1,DE);
 FOR D:=DA TO DE DO BEGIN
  JD:=JULDAT(D,M,J1);
  S:=TRUNC ((J1-1)/4);
  D1:=S+TRUNC (30.6*M+0.53/SQR (M-1.55)-32.3)+D-0.5;
  IF (J1 MOD 4=0) AND (M>=3) THEN D1:=D1+1;
  T:=(365*J1+D1)/36525;
  OMEGA:=BOG*(281.220833+1.719175*T+0.000361);
  EXZ:=0.01675104-0.0000418*T;
  EKL:=BOG*(23.452294-0.0130125*T);
  MA:=BOG*(-1.524155-0.00015*T*T-0.25590255*J1+0.98560027*D1);
  EN:=MA;
  REPEAT
    E:=EN;
    EN:=MA+EXZ*SIN (E);
  UNTIL (ABS (E-EN)<1E-7);
  R:=1-EXZ*COS (E);
  V:=2*ARCTAN (SQRT ((1+EXZ)/(1-EXZ))*TAN (E/2));
  VO:=INTERVALL (V+OMEGA,0,2*PI);
  X:=R*COS (VO);
  Y:=R*SIN (VO)*COS (EKL);
  Z:=R*SIN (VO)*SIN (EKL);
  DEC:=R*ARCSIN (Z/R);
  RA:=INTERVALL (2*ARCTAN ((R*COS (DEC)-X)/Y)/BOG/15,0,24);

  KUL:=INTERVALL ((RA-7.13-0.06570982237*(JD-2444969.5))/1.002737909+1,0,24);
  TB:=ARCCOS (-TAN (DEC)*TAN (GEOB))/BOG/15;
  SA:=INTERVALL (KUL-TB,0,24);SU:=INTERVALL (KUL+TB,0,24);

  WRITE("DATUM:",D:2,".");
  CASE M OF  1:WRITE("JANUAR");
             2:WRITE("FEBRUAR");
             3:WRITE("MAERZ");
             4:WRITE("APRIL");
             5:WRITE("MAI");
             6:WRITE("JUNI");
             7:WRITE("JULI");
             8:WRITE("AUGUST");
             9:WRITE("SEPTEMBER");
            10:WRITE("OKTOBER");
            11:WRITE("NOVEMBER");
            12:WRITE("DEZEMBER");
  END;
  WRITELN(" ",J1:2,"    JD:",JD:13:1);
  WRITELN("X=",X:10:6,"   Y=",Y:10:6,"   Z=",Z:10:6);
  WRITELN("R=",R:10:6,"   EXZ=",EXZ:15:8);
  WRITELN("EKL=",EKL/BOG:16:6);
  WRITELN("OMG=",OMEGA/BOG:16:6);
  WRITELN("MA =",MA/BOG:13:6,"   E  =",E/BOG:13:6,"   V  =",INTERVALL (V/BOG,0,360):13:6);
  WRITELN("SA =",SA:10:4,"      KUL=",KUL:10:4,"      SU =",SU:10:4);
  WRITELN("L  =",VO/BOG:13:4);
  WRITELN("DEC=",DEC/BOG:10:4,"   RA =",RA:10:4);
  WRITELN;
  WRITELN;
  WRITELN;
 END;
END.



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search