|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3072 (0xc00)
Types: TextFile
Names: »movestri1tx«
└─⟦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⟧
; movestri1_tx * page 1 27 09 77, 9.41;
; move_string_1
; *************
if listing.yes
char 10 12 10
move_string_1 = set 1
move_string_1 = algol
external integer procedure move_string_1
______________________________________
_ ( ra, ix, str );
value ix;
real array ra;
integer ix;
string str;
<*
The procedure moves a text_string str to ra char after
char with the standart alphabeth except for space (=32) and
underlined (=95), whitch are taken as skipped chars.
movesting1 ( return value, integer ) The number of real
_ array elements used. Negative if ra is
_ filled up, - then is the last char not a zero.
ra ( return value, real array ) the moved text
_ placed in element ix and on. If the last char in
_ the last element is used movesting1 is negative.
ix ( call value, integer value ) See above.
str ( call value, string ). text string terminated
_ by a null chararter.
No alarm_exits.
progr: K. Engsager 31 mar 1977
*>
begin
real from, to;
integer skift, last_skift, tegn, i, j, got, f_max, t_max;
i := ix;
last_skift := 48;
system( 3 ) array_bounds :( t_max, ra );
f_max := t_max - i + 1;
f_max := ( f_max + 1 ) // 2 - 1 + f_max;
got := -1;
for f_max := f_max + 1 while got < 0 do
begin
array from_ar( 1 : f_max );
got := move_string( from_ar, 1, str );
if got > 0 then
begin
\f
comment movestri1_tx * page 2 27 09 77, 9.41
0 1 2 3 4 5 6 7 8 9 ;
for j:= 1 step 1 until f_max do
begin
from:= from_ar( j );
for skift:= -40 step 8 until 0 do
begin
tegn := from shift skift extract 8;
if tegn <> 0 then
begin
if tegn <> 95 and tegn <> 32 then
begin
to := ( to shift 8 ) add tegn;
if last_skift<>8 then last_skift:= lastskift-8 else
begin
ra(i) := to;
last_skift := 48;
if i <> t_max then i:= i + 1 else
begin
skift:= 0;
j:= f_max;
ix := ix - tmax - 1;
end;
end;
end;
end
else
begin
ix := 1 + i - ix;
skift := 0;
j := fmax;
end;
end;
end;
if ix > 0 then ra(i) := to shift last_skift;
move_string_1 := ix;
end movestring ok;
end from_ar;
end;
end;
if warning.yes
( mode 0.yes
message move_string_1 not ok
lookup move_string_1)
▶EOF◀