DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦f53174570⟧ TextFile

    Length: 4608 (0x1200)
    Types: TextFile
    Names: »ramindx«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦this⟧ »ramindx« 

TextFile

;pal
clear user ramind
ramind=set 1 disc5
scope user ramind
ramind=algol
\f


RAMAN ANALYSE                                                     IND
external procedure ramind(nr);
integer nr;
begin
  integer i,k,j,t,umax,umin,nc,v,u,u0,a;
  long array BS,nspo(1:2);  array head(1:12);
  integer array D(1:1), Z(1:20), tsp1,tsp2,tspi,tspo,trs,npft(1:10);
  integer field fi;
  real tmin,tmax,min,max,bmin,bmax,b,p,del,u1,alfa,to,t1;
  zone sp1,sp2, spi,spo,zrs(128,1,stderror);
  ramng(nr,BS,1); if lookuptail(BS,tspi) <> 0 then
  begin write(out,"nl",1,<:***:>,BS,<: unknown:>);
        goto slut;
  end;
  ramng(nr,nspo,2);
  lookuptail(<:ramnpf:>,npft); alfa:=npft(9)/1000; t1:=npft(10)/10;

  open(spi,4,BS,0); inrec(spi,128);
  for j:=1 step 1 until 12 do head(j):=spi(j);
  tmin:=tspi(9); tmax:=tspi(10);


  p:=1.1904; to:=6361;

  b:=tmin*alfa-to-t1-6368*(alfa-1);
  bmin:=(entier(b*10+1))*0.1;
  bmax:=tmax*alfa-to-t1-6368*(alfa-1);



  if lookupentry(<:ramsp1:>) = 0 then removeentry(<:ramsp1:>);
  cleararray(tsp1);
  tsp1(1):=400;
  reservesegm(<:ramsp1:>, tsp1(1)); permentry(<:ramsp1:>,15);

  open(sp1,4,<:ramsp1:>,0);
  if tspi(8)>0 then setposition(spi,0,1); setposition(sp1,0,2);
  t:=0; max:=0; min:=maxinteger;
  getzone(spi,Z); redefarray(D,Z(14)+1,256);

  for j:=inrec(spi,128) while spi(1) shift (-40) extract 8=0, j do
  begin k:=D(1) extract 16;
        for j:=1 step 1 until k do
        begin outrec(sp1,1);
              i:=D(j+1); sp1(1):=i;
        end j;
        t:=t+k;
  end inrec;

  tsp1(1):=2 + (t+127)//128;

  monitor(44,sp1,15,tsp1);
  setposition(sp1,0,2); swoprec(sp1,128);
  sp1(1):=sp1(2):=sp1(3):=sp1(4):=sp1(5);
  close(spi,true);
  write(out,"nl",1,<:fre. int.= :>,<< dddd>,bmin,bmax,<: cm-1:>,
  <:  r=:>,<< d.dddd>,t/(tmax-tmin)/8.4,"nl",2);
  setposition(out,0,0);




  if lookupentry(<:ramsp2:>) = 0  then removeentry(<:ramsp2:>);
  cleararray(tsp2);
  tsp2(1):=400;
  reservesegm(<:ramsp2:>, tsp2(1)); permentry(<:ramsp2:>,15);

  open(sp2,4,<:ramsp2:>,0); setposition(sp2,0,2); tsp2(1):=2;
  setposition(sp1,0,2); inrec(sp1,128);
  a:=0; u0:=0;

  for k:=0 step 1 until 400 do
  begin tsp2(1):=tsp2(1)+1; outrec(sp2,128);
        for i:=1 step 1 until 128 do
        begin v:=k*128+i;
              u:=entier(v/p); if u>=t-1 then goto L1; del:=v/p-u;
              if u mod 128=1 and u>10 and u>u0 then
              begin a:=a+1; inrec(sp1,128);
              end;
              u0:=u;
              j:=u-a*128; if j<1 then goto B1;
              if j=128 then
              sp2(i):=sp1(j)
              else
              sp2(i):=sp1(j)+(sp1(j+1)-sp1(j))*del;
B1:     end i;
  end k;
L1:
  monitor(44,sp2,15,tsp2);
  setposition(sp1,0,2); setposition(sp2,0,2);
  inrec(sp1,128); swoprec(sp2,128); sp2(1):=sp1(1);
  t:=v;
  close(sp1,true);


  if lookupentry(nspo) = 0 then removeentry(nspo);
  cleararray(tspo);
  tspo(1):=400;
  reservesegm(nspo,tspo(1)); permentry(nspo, 0);

  open(spo,4,nspo,0); setposition(spo,0,2); tspo(1):=2;
  setposition(sp2,0,2); inrec(sp2,128);
  a:=0; u0:=0;

  for k:=0 step 1 until 400 do
  begin tspo(1):=tspo(1)+1; outrec(spo,128);
      for i:=1 step 1 until 128 do
      begin v:=k*128+i;
            u1:=(bmin+0.1*(v-1)+to+t1+6368*(alfa-1))/alfa;
            u:=entier((u1-tmin)*10)+1;
            if u>=t then goto L2;
            del:=u1*10-entier(u1*10);
            u0:=u;
            j:=u-a*128;
            if j>128 then
            begin a:=a+1;
                  inrec(sp2,128);
                  j:=1;
            end;
            if j<1 then goto B2;
            if j=128 then
            spo(i):=sp2(j)
            else
            spo(i):=sp2(j)+(sp2(j+1)-sp2(j))*del;
            if spo(i)>max then begin max:=spo(i); umax:=v; end else
            if spo(i)<min then begin min:=spo(i); umin:=v; end;
B2:    end i;
end k;
L2:
monitor(44,spo,15,tspo); close(sp2,true);


setposition(spo,0,0);
outrec(spo,128); for j:=1 step 1 until 128 do spo(j):=-1;
outrec(spo,128); for j:=1 step 1 until 128 do spo(j):=-1;
setposition(spo,0,0); swoprec(spo,128);

spo(1):= tspo(1); spo(2):= v; spo(3):= (tmax-tmin)*8.4;
spo(4):=min; spo(5):=umin;
spo(6):=max; spo(7):=umax;
spo(8):=tmin; spo(9):=tmax; spo(10):=nr;
spo(11):=bmin; spo(12):=bmax;
for j:=1 step 1 until 12 do spo(99+j):=head(j);
close(spo,true); slut:    end; end
\f


▶EOF◀