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

⟦f9b805b7b⟧ TextFile

    Length: 25344 (0x6300)
    Types: TextFile
    Names: »readnmbtx«

Derivation

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

TextFile



;       read_nmb_tx           * page 1    1 08 79, 13.01;  

;  read_nmb 
;  ********

if listing.yes
char 10 12 10

read_nmb=set 1 disc

readnmb=algol

external long procedure read_nmb
________________________________
_             (z, numbertype);  
zone           z;  
integer           numbertype;  

comment

read_nmb      (return, long) the landsnummer or station number
_                            input.  the value 200 00 0000
_                            is added to station numbers. K is
_                            totally neglected. old  landsnummer
_                            notation (without - ) is recognized
_                            and transformed correctly provided
_                            only 3 digits are used in the løbenr
_                            negative numbers are not transformed, 
_                            but their occurrence is reflected in
_                            the value of numbertype.  the termi-
_                            nator m switches positive numbers to
_                            geotype with the typedec packed in
_                            numbertype and with mtr=true.
_                            Station number (numbertype=2) may be
_                            terminated by a capital letter A to H, 
_                            P, N, S, X, Ø, V.
_   bit 0     : binary zero.
_   bit 1-28  : the main number
_   bit 29-35 : suffix capital, point, K, or all zeroes
_   bit 36-47 : suffix number, used for point and K only
_   an ordinary stationsnummer has all zeroes in bits 29-47.
z             (call and return, zone) open for char input
numbertype    (return, integer) the type of the number input
_                            1 : landsnummmer (ddd-dd-dddd)
_                            2 : station number
_                            3 : neg number term by x
_                            4 : neg number term by z
_                            5 : neg nmb term by anything else  
_                                inclusive dec_point.
_                            >=8 shift 6 : geotype (mtr=true)  

Packing of                Photonmb        Modelnmb    G.I./G.M. nmb
bit 0     : binary zero
bit 1-11  :               first nmb    )             ( main nmb
bit 12-16 :             char extract 6 )( main nmb ) ( +
bit 17-28 :               second nmb   )             ( 200 00 0000
bit 29-35 :                  1             77<*M*>     76<*L*>
bit 36-47 : suffix number

Suffix number packing for G.I./G.M. intermedium nmb ex. G.M.27/28
bit 36    :  = 1                                   (else = 0)
bit 37-41 : numberdiff = lastnmb - firstnmb ( >0 )
bit 42-47 : decpoint suffix

EM is recorded as : -1 z  not_eof = true

;  

\f



comment read_nmb_tx           * page 2    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 ;  

begin

boolean  tpd, dec_pt, neg, niv,  
_        model, photo1, photo2, kalot, lnr;  

integer  action, state, pt_val, sg_val, sp_val, 
_        max_suffix, digits, lnr_state, niv_state, 
_        Cap, div, r, char, class, nivcase;  

long     number, saved_number, h_nr, s_nr, p_nr, dec_number,  
_        niv_nmb, route, picture;  

comment syntax of legal numbers :

landsnummer    ::= (( ddd-dd-dddd * ddd_dd_ddd )_<term_1>)
_                * ( ddd-dd-_<CAPITAL><term_3>)
station number ::= <ordenary stnmb> * <photo nmb> * <model nmb>
_                * <niv nmb> 
neg number     ::= -dddddddddd<term_4>

<ordinary stnmb> ::= ddddd<term_2>
<photo nmb>      ::= Pddd<letter>ddd<term_3>
<model nmb>      ::= Mddd<term_3>
<niv nmb>        ::= <pro>dddd(/dddd * <empty>)<term_3>

<pro>    ::= G.I.*G.M.*F.K.*K.K.
<term_1> ::= <small letter> * <a class 8 char> * <a class 7 char>
<term_2> ::= ( _K_dd * .dddd * _<CAPITAL> * <empty> ) _<term_1>
<term_3> ::= ( .dddd * <empty> ) _<term_1>
<term_4> ::= ( .dddddd * <empty> )_< any char not digit >

<CAPITAL> ::= A*B*C*D*E*F*G*H*I*J*P*N*S*X*Ø*V

d is a digit

NB NB NB
in <photo nmb> <model nmb> and <niv nmb> is space a TERMINATOR
then a number as G.I.24 2 will give the alarm :     
* illegal  nmb term G.I.242  , term = 50 

NB NB NB
<ordinary nmb> where <term_2> == ( .dddd * <empty>) _m
_       is converted to geotype meters.

negative numbers where <term_4> == _m or .d_m are converted
_
negative numbers where <term_4> == .d_< char not m >
_       the digits after point are skipped
_                                  *******

<photo nmb>  )  (
<model nmb>  )  ( spaces are illegals or terminators
<niv nmb>    )  (

prog.  K. Engsager, K. Poder jan.78
_      K. Engsager           mar.79  july.79

;  

\f



comment read_nmb_tx           * page 3    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 ;  

comment decision table for input :  

-----               1      2      3      4      5      6
class             digit  sign decpoint space  other  illegal
-----

state                  action/next state

0 init             1/5    2/1    3/3    4/0    6/0    8/10
1 after sign       1/5    2/1    3/3    4/2    6/0    8/10
2 after sign+space 1/5    2/1    3/3    2/0    6/0    8/10
3 after point      1/5    2/1    2/3    4/4    6/0    8/10
4 after point+sp   1/7    2/1    2/3    2/0    6/0    8/10
5 after digit      1/5    5/5    3/7    4/6    7/10   8/10
6 after digit+sp   1/5    5/5    3/7    7/10   7/10   8/10
7 after digit+pt   1/7    8/10   8/10   4/8    7/10   8/10
8 after dig+pt+sp  1/8    8/10   8/10   7/10   7/10   8/10

actions
-------
include digit    1
record sign      2
record point     3
no action        4
test lnr         5
init test        6
stop test        7
alarm            8

;  

\f



comment read_nmb_tx           * page 4    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 ;  

procedure illegal_term;  
begin

if read_status >= 0 then
_  system(9)alarm_exit:(round number, <:<10>ilg.term:>)
else
begin

  if read_status shift 1 < 0 then
  begin

    write(out, nl, 1, <:* illegal nmb term  :>);  

    class := if photo1 or photo2 then 1
    _   else if model            then 2
    _   else if niv              then 3
    _   else                          4;  

    if class<=3 then write(out, 
    _  case class of (<:P:>, <:M:>,   
    _  _ (case niv_case of (<:G.I.:>, <:F.K.:>, <:K.K.:>))));  

    class := case class of
    (        if photo1 then 1 else 2, 
    _        1, 
    _        if niv_state=1 then 1 else 6, 
    _        if kalot       then 1 else
    _        if lnr_state=2 then 3 else
    _        if lnr_state=3 then 4 else  
    _        if lnr_state=4 then 5 else 1);  

    case class of
    begin

      write(out, <<d>, number);  

      begin
        write(out, <<d>, p_nr shift(-17), 
        _  false add (((p_nr shift(-12)) extract 5)+64), 1);  
        if number extract 12 > 0 then
        _  write(out, <<d>, number extract 12);  
      end;  

      begin
        write(out, <<d>, h_nr//100_0000, <:-:>);  
        if digits>0 then write(out, <<d>, number);  
      end;  

      begin
        if h_nr = 0 then write(out, <:K:>) else
        _  write(out, <<d>, h_nr // 100_0000);  
        write(out, <<d>, <:-:>, s_nr//10000, <:-:>);  
        if digits>0 then write(out, <<d>, number mod 10000);  
      end;  

      begin
        if h_nr=0 then write(out, <:K:>) else
        _  write(out, h_nr // 100_0000);  
        write(out, <<d>, <:-:>, s_nr // 10000, <:-:>, 
        _     false add Cap, 1);  
      end;  

\f



<*       read_nmb_tx           * page 5    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 *>

      begin
        write(out, <<d>, niv_nmb, <:/:>);  
        if digits>0 then write(out, <<d>, number);  
      end;  

    end cases;  

    if dec_pt or kalot then
    begin
      write(out, if dec_pt then <:.:> else <:K:>);  
      if digits>0 then write(out, <<d>, dec_number);  
    end;  

    write(out, false add char, 1, <:  , term = :>, char, 
    _     <: ;<10>:>);  

  end;  

  lnr         :=
  model       :=
  photo2      :=
  niv         :=
  neg         :=
  dec_pt      := false;  
  digits      := 5;  
  number      := 99 999;  
  Cap         := 99 <* X *>;  
  read_status := read_status + 1;  

end;  
end illegal_term;  

procedure read_semi;  
begin
for r := char while char<>59 <*;*> and char<>25 <*em*> do
_   class := read_char(z, char);  
if char = 25 then repeat_char(z);  
end;  

procedure read_semi_1;  
begin
for class := read_char(z, char) while char<>59 and not_eof do
_   not_eof := char <> 25;  
if -, not_eof then repeat_char(z);  
end;  

pr_vers := 1;  

\f



comment read_nmb_tx           * page 6    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 ;  

if not_eof then
begin

model        :=
photo1       :=
photo2       :=
kalot        :=
lnr          :=
niv          :=
mtr          :=
neg          :=
dec_pt       := false;  

Cap          :=
digits       :=
state        := 0;  

sg_val       := 2;  
pt_val       := 3;  
sp_val       := 4;  
niv_state    := 
lnr_state    := 1;  
max_suffix   := 4095;  

dec_number   :=
saved_number :=
number       := 0;  

while state <= 9 do
begin

  in_class := read_char(z, char);  

  class := case (in_class-1) of
  (1, sg_val, pt_val, 5, 5, if char=32 then sp_val else 5, 5);  

  action := case (6*state + class) of (
  <*input cl:  dig  sgn  pnt  sp  other  ill*>

  <*state*>
  <*0=init  *>  1,   2,   3,   4,   6,   8, 
  <*1=sign  *>  1,   2,   3,   4,   6,   8, 
  <*2=sg +sp*>  1,   2,   3,   2,   6,   8, 
  <*3=pnt   *>  1,   2,   2,   4,   6,   8, 
  <*4=pnt+sp*>  1,   2,   2,   2,   6,   8, 
  <*5=digit *>  1,   5,   3,   4,   7,   8, 
  <*6=dig+sp*>  1,   5,   3,   7,   7,   8, 
  <*7=dig+pt*>  1,   8,   8,   4,   7,   8, 
  <*8=d+p+sp*>  1,   8,   8,   7,   7,   8);  

  state  := case (6*state + class) of (

  <*0=init  *>  5,   1,   3,   0,   0,  10, 
  <*1=sign  *>  5,   1,   3,   2,   0,  10, 
  <*2=sg +sp*>  5,   1,   3,   0,   0,  10, 
  <*3=pnt   *>  5,   1,   3,   4,   0,  10, 
  <*4=pnt+sp*>  7,   1,   3,   0,   0,  10, 
  <*5=digit *>  5,   5,   7,   6,  10,  10, 
  <*6=dig+sp*>  5,   5,   7,  10,  10,  10, 
  <*7=dig+pt*>  7,  10,  10,   8,  10,  10, 
  <*8=d+p+sp*>  8,  10,  10,  10,  10,  10);  

  comment TEST_OUTPUT ON   if ff then
  write(out, <:in cl ch ac st:>, << ddd>, 
  in_class, class, char, action, state, nl, 1);  

\f



comment read_nmb_tx           * page 7    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 ;  

  case action of
  begin

    begin comment action 1 : include digit;  
      number := ((number shift 2) + number) shift 1
      _         + char - 48;  
      digits := digits + 1;  
    end;  

    begin comment case 2, sign;  
      neg    := char = 45;  
      dec_pt := char = 46;  
    end;  

    begin comment case 3, decpoint;  
      dec_pt := true;  
      saved_number := number;  
      number       := 0;  
      digits       := 0;  
    end;  

    comment case 4, no action;  ;  

    begin comment case 5, test lnr;  

      case lnr_state of
      begin

        <* state 1 *>
        begin
          pt_val := 6;  
          if -, neg then
          h_nr := 100 0000 * number
          else
          begin
            lnr_state := 2;  
            h_nr := 0;  
            s_nr := 10 000 * number;  
          end;  
        end;  

        <* state 2 *>
        begin
          sg_val := 6;  
          s_nr   := 10 000 * number;  
        end;  

      end lnr_states;  

      lnr_state := lnr_state + 1;  
      digits := 0;  
      number := 0;  

    end test lnr;  

\f



comment read_nmb_tx           * page 8    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 ;  

    begin comment test init char;  

      case in_class - 4 of
      begin

        comment class 5, exp-mark;  
        ;  

        begin comment class 6, letters;  

          if char = 70 or char = 71 or char = 75 <*F G K*> then
          <*look for G.I. or G.M. or F.K. or K.K.*>
          begin
            action   := if char = 71 then 1 else 2;  
            niv_case := if char = 75 then 3 else action;  
            class := read_char(z, char);  
            if char = 46 <*.*> then
            begin
              class := read_char(z, char);  
              if char = (case action of (73 <*I*>, 75 <*K*>)) 
              or char = (case action of (77 <*M*>, 75 <*K*>)) then
              begin
                class := read_char(z, char);  
                if char = 46 <*.*> then
                begin
                  niv := read_char(z, char) = 2;  
                  if niv then   
                  begin
                    niv_nmb   := 0;  
                    state     := 5;  
                    sg_val    := 6;  
                    sp_val    := 5;  
                  end;  
                end;  
              end;  
            end;  
            repeat_char(z);  
          end GI_or_GM

          else

          if char = 77 <*M*> then
          begin
            model := read_char(z, char) = 2;  
            if model then  
            begin
              state  := 5;  
              sg_val := 6;  
              sp_val := 5;  
            end;  
            repeat_char(z);  
          end

          else

\f



<*       read_nmb_tx           * page 9    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 *>

          if char = 80 <*P*> then
          begin
            photo1 := read_char(z, char) = 2;  
            if photo1 then  
            begin
              state  := 5;  
              sg_val :=
              pt_val :=
              sp_val := 6;  
            end;  
            repeat_char(z);  
          end photo;  

          neg    :=
          dec_pt := false;  
        end letter case;  

        comment graphic;  
        if char = 42 <* * *> then read_semi;  

        comment case em;  
        if char = 25 <* em *> then
        begin
          digits  := 1;  
          neg     := true;  
          number  := 1;  
          char    := 122 <*z*>;  
          not_eof := false;  
          state   := 10;  
          write(out, nl, 2, <:end medium generated:>, nl, 2);  
        end;  

      end test cases;  

    end test init char;  

    _

    begin comment case 7, test stop char;  

      if dec_pt then
      begin
        dec_number := number;  
        number     := saved_number;  
      end;  

\f



comment read_nmb_tx           * page 10    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 ;  

      if char <> 42 then
      begin

        if inclass > 5 
        and (lnr_state=1 or lnr_state=3 or lnr_state=4) then
        begin

          class := if lnr_state = 3 
          _        and digits   > 0 then 1
          _   else if photo1        then 2
          _   else if photo2        then 3
          _   else if model         then 4
          _   else if niv           then 5
          _   else if kalot         then 9
          _   else if lnr_state = 4 
          _       or (lnr_state = 3 and digits = 0)
          _                         then 10
          _   else if number>99_999 and -, dec_pt and -, neg
          _      and char<>109 <*m*> then 1
          _   else                   inclass;  
          comment TEST ON  if ff then
          write(out, <:cl, lnrst, dig:>, class, lnrstate, digits, nl, 1);  
          comment TEST OFF;  

          case class of
          begin

            begin comment lnr;  
              if lnr_state=1 then
              number := 10000 * (number // 1000) + number mod 1000
              else
              begin
                neg    := false;  
                number := h_nr + s_nr + number;  
              end;  

              if (in_class=6 and char<97) or
              _ 200_00_0000 + 100_0000 <= number then illegal_term;  
              if 200_00_0000 < number then
              number := number - 200_00_0000;  

              lnr:= true;  

            end;  

            if in_class = 6 then
            begin comment photo1;  
              photo1 := false;  
              photo2 := true;  
              if number < 2048 then route := 0
              else
              begin
                route  := number;  
                number := 2047;  
              end;  
              p_nr := ((number shift 5) add (char extract 5))
              _       shift 12;  
              digits := 0;  
              number := 0;  
              state  := 5;  
              pt_val := 3;  
              sp_val := 5;  
            end  
            else illegal_term;  

\f



comment read_nmb_tx           * page 11    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 ;  

            begin comment photo2;  
              if char=32 then inclass := read_char(z, char);  
              if (in_class=6 and char<97)  
              or  in_class<5 then illegal_term;  
              if number < 4096 then picture := 0
              else
              begin
                picture := number;  
                number  := 4095;  
              end;  
              number := p_nr + number;  
              Cap    := 1;  
            end;  

            begin comment model;  
              if char = 32 then in_class := readchar(z, char);  
              if (in_class=6 and char<97)  
              or  in_class<5 then illegal_term;  
              Cap := 77 <*M*>;  
            end;  

            begin comment GI_or_GM_or_FKor_KK;  
              if char = 47 and nivstate = 1 then
              begin
                niv_nmb   := number;  
                number    := 0;  
                digits    := 0;  
                state     := 5;  
                niv_state := 2;  
              end
              else
              begin
                if niv_state = 2 then
                begin
                  number := number - niv_nmb;  
                  if number > 31 then number := 31;  
                  if number < 0  then number := 0;  
                  if dec_number > 63 then dec_number := 63;  
                  dec_number := 1 shift 11 
                  +             number shift 6
                  +             dec_number;  
                  number     := niv_nmb;  
                end
                else
                if dec_number > 2047 then dec_number := 2047;  

                if char=32 then in_class := read_char(z, char);  
                if (in_class=6 and char<97)  
                or  in_class<5 then illegal_term;  
              end;  
              Cap := case nivcase of (76 <*L*>, 2, 3);  
            end;  

\f



<*       read_nmb_tx           * page 12    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 *>

            begin comment nr terminated by character;  

              if char = 109 <* m *> then
              begin
                mtr := true;  
                if dec_pt then
                begin
                  for r := 1 step 1 until digits do
                  _   number := ((number shift 2) +
                  _               number) shift 1;  
                end
                else
                digits := 0;  
                number_type := 8 shift 6 add digits;  
                tpd         := false add number_type;  
                number      := number + dec_number;  
                if neg then number := - number;  
                read_nmb    := conv_t_geo(number, tpd);  
                neg         := false;  
                digits      := 6;  
              end
              else
              if -, neg then
              begin
                if dec_pt then
                begin
                  if char < 97 <* a *> then illegal_term;  
                end
                else
                if char = 75 <* K *> then
                begin
                  kalot := true;  
                  saved_number := number;  
                  number       := 0;  
                  state  := 5;  
                  sg_val :=
                  pt_val := 6;  
                  Cap    := 75;  
                  max_suffix := 99;  
                end
                else
                if (65<=char and char <=74 <* A..J *> )
                or char=80 or char=86 <* P V *>
                or char=78 or char=83 <* N S *>
                or char=88 or char=92 <* X Ø *> then
                begin
                  Cap      := char;  
                  in_class := read_char(z, char);  
                  if char = 42 <* * *> then read_semi_1;  
                  if char = 32 <* sp *> then
                  begin
                    class := read_char(z, char);  
                    if char = 42 then read_semi_1;  
                  end;  
                  not_eof := char <> 25 and not_eof;  
                  if (in_class=6 and char<97)  
                  or  in_class<5 then illegal_term;  
                end
                else
                if char < 97 <* a *> then illegal_term;  
              end -, neg;  
            end;  

\f



<*       read_nmb_tx           * page 13    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 *>

            comment nr term grafic, no action;  
            ;  

            comment nr term nl/ff/em;  
            ;  

            begin comment kalot;  
              dec_number := number;  
              number     := saved_number;  
              if char<97 <*a*> and in_class=6 then illegal_term;  
            end;  

            if lnr_state = 4 
            or ((65<=char and char<=74 <* A..J *> )
            or char=80 or char=86 <* P V *>
            or char=78 or char=83 <* N S *>
            or char=88 or char=92 <* X Ø *>) then
            begin comment spec lnr_nivcase hnr-snr-<CAPITAL>;  
              comment this case is rather clumsy.
              It would be natural to search Cap or decimal 
              under main actin 5 : test lnr -
              but this lnr_nivcase is rather seldom;  

              if lnr_state = 3 then
              begin
                neg       := false;  
                number    := h_nr + s_nr;  
                Cap       := char;  
                in_class  := read_char(z, char);  
              end;  

              if char = 46 <*decpoint*> and lnr_state = 3 then
              begin
                repeatchar(z);  
                pt_val := 3;  
                sg_val := 6;  
                state  := 5;  
              end
              else
              begin
                if char = 42 <* * *> then read_semi_1;  
                if char = 32 <* sp *> then
                begin
                  in_class := read_char(z, char);  
                  if char = 42 <* * *> then read_semi_1;  
                end;  
                not_eof   := char <> 25 and not_eof;  
                lnr_state := 4 <* to propper ill.act.*>;  
                if (in_class = 6 and char < 97)
                or  in_class < 5 then illegal_term;  
                digits := 1;  
              end;  
              lnr       := true;  
              lnr_state := 4;  
            end
            else illegal_term;  

          end term cases;  

\f



<*       read_nmb_tx           * page 14    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 *>

        end
        else
        illegal_term;  

      end
      else
      begin
        readsemi;  
        if not_eof then state := 5;  
      end;  

    end test stop char;  

    begin comment case 8, illegal_term;  
      if dec_pt or kalot then 
      begin
        dec_number := number;  
        number     := saved_number;  
      end;  
      illegal_term;  
    end;  

  end cases;  

  comment TEST_OUTPUT ON  
  if ff then
  write(out, <:st, kind, cl :>, <<dd>, state, sp, 2, 
  _  if photo1 then <:P1:> else
  _  if photo2 then <:P2:> else
  _  if model  then <:M:>  else
  _  if niv    then 
  _  (case niv_state of (<:G.I.:>, <:F.K:>, <:K.K.:>)) else
  _  if lnr_state>1 then <:lnr:> else
  _  if kalot  then <:kalot:> else <:nr:>, 
  _  class, nl, 1);  

end state <= 9;  

if digits = 0 then illegal_term;  

if neg then
begin
  read_nmb    := - number;  
  number_type := if char = 120 then 3 <* x *>
  _         else if char = 122 then 4 <* z *> 
  _         else                    5 <* anything *>;  
end
else
if -, mtr then
begin
  number_type := if lnr then 1 else 2;  
  if -, (lnr or model or photo2) then
  _  number := 200_00_0000 + number;  
  if Cap=0 and dec_pt then Cap := 46;  
  Cap      := Cap shift 12;  
  r        := if dec_number > max_suffix then max_suffix
  _           else dec_number;  
  read_nmb := (number shift 19) add Cap add r;  
end;  

repeat_char(z);  
t_char := char;  

if route+picture > 0 and photo2 then
begin
  write(out, nl, 2, <:***P:>, <<zdd>, 
  if route > 0 then route else (number shift (-17)), 
  false add (((number shift (-12)) extract 5) + 64), 1, 
  if picture > 0 then picture else number extract 12);  
  if r > 0 then write(out, <:.:>, <<d>, r);  
  write(out, <:  -->  :>);  
  write_stn(out, number shift 19 add Cap add r);  
  write(out, <: ; :>, nl, 1);  
end;  

end
else

\f



<*       read_nmb_tx           * page 15    1 08 79, 13.01
0 1 2 3 4 5 6 7 8 9 *>

begin  <* EM read earlier, i.e. not_eof == false *>
_    <* simulate -1 z *>
read_nmb    := -1;  
t_char      := 122 <* z *>;  
number_type := 4;  
write(out, nl, 2, <:file empty:>, nl, 2);  
end;  

end read_nmb;  

end;  

if warning.yes
( mode 0.yes
message read_nmb  not ok
lookup read_nmb)

end

finis

▶EOF◀