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

⟦523f74fa8⟧ TextFile

    Length: 3840 (0xf00)
    Types: TextFile
    Names: »progentrytx«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦80900d603⟧ »giprocfile« 
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦80900d603⟧ »giprocfile« 
            └─⟦this⟧ 

TextFile



;       prog_entry_tx         * page 1   27 09 77, 13.31;  

;  prog_entry
;  **********

if listing.yes
char 10 12 10

prog_entry = set 1

prog_entry = algol

external integer procedure prog_entry
_____________________________________
_                (t, t_max, name);  
value                t_max;  
integer           t, t_max;  
string                      name;  

comment

the procedure is designed as an aid to the problem of packing
several small algol programmes on one or a few slices in order
save backing storage. assume that e.g. three minor programmes
p, q, rx should be packed together. the programmes are then
arranged as statement cases surrounded by a block with an integer
declaration. the programmes are then called as string parameters
in the procedure and the integer variable is the first parameter.
the second parameter is the number of programs packed, here 3;  

<*example: programs p, q, rx.
multi entry program as follows:

begin integer  t;  
case prog_entry(t, 3, case t of (<:p:>, <:q:>, <:rx:>)) of
begin
<program text of p>;  
<program text of q>;  
<program text of rx>;  
end *>

comment 

the name of the translated programme is designated as the
<main name> and the others are called <aux name1>,  aux name2> , , 
all <aux names> should then have catalog entries with the
<main name> as their document name  and with the last 5 word of
their tail as the <main name> tail;  

<* example of fp comm:
let q be <main name>,  and p and rx <aux namees>
fp-comm:
z = assign q  ;  convenient work name if q were a long name
p  = entry bs q z z z z z
rx = entry bs q z z z z z
possible scope comm may follow*>

\f



comment prog_entry_tx         * page 2   27 09 77, 13.31
0 1 2 3 4 5 6 7 8 9 ;  

comment
then main name

prog_entry       (return)           integer
the value of t when name is the same as the prog_name in the
fp-command activating the programme. if no matching name is
found a system(9 - alarm with the string <:progentr:>is given.

t                (call)             integer
the controlled variable in a jensen device using call by name
of then string name. t steps from 1 to t_max.

t_max            (call)             integer
the upper limit of the value of t.

name             (call)             string
the name/names of the candidate entry/entries.
the actual call is case t of (name1, name2, ...  nametmax)
;  

begin

  integer    i;  
  array      prog_name, comp_name(1:2);  

  comment look for prog name after =;  
  i := system(4, 1, prog_name);  

  comment look for prog name first;  
  if i shift (-12) <> 6 then
  i := system(4, 0, prog_name);  

  comment alarm for strange param, alarm value = 0;  
  if i extract 12 <> 10 then 
  system(9)alarm:(0, <:<10>progentr:>);  

  i := 0;  

  comment compare names;  
  for t := 1 step 1 until tmax do
  begin
    comp_name(1) := comp_name(2) := real <::>;  
    if move_string_1(comp_name, 1, name) < 0 then
    system(9)alarm:(t, <:<10>progentr:>);  <*alarm value = t*>
    if  prog_name(1) = comp_name(1)
    and prog_name(2) = comp_name(2) then
    begin
      prog_entry := i := t;  
      t          := t_max;  
    end;  
  end t-loop;  

  if i = 0 then system(9)alarm:(-1, <:<10>progentr:>);  

end prog_entry;  

end

if warning.yes
(mode 0.yes
message prog_entry not ok
lookup prog_entry)
▶EOF◀