home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol079
/
io.pli
< prev
next >
Wrap
Text File
|
1984-04-29
|
2KB
|
95 lines
io:
proc;
%replace
true by '1'b,
false by '0'b;
%include 'attrib.dcl';
hdr_out:
proc(a) ext;
/* write name attribute a */
dcl
a fixed,
i fixed,
f char(max_chr);
do i = 1 to max_chr by 2;
substr(f,i,2) = '.';
end;
substr(f,1,length(att_chars(a))+1) = att_chars(a);
put edit(f) (column(4),a);
end hdr_out;
att_in:
proc(a,r) returns(bit) ext;
/* read attribute to r, return true if sucessful */
dcl
a fixed,
r char(max_siz),
t char(max_siz) var,
fl fixed;
get edit(t) (a);
fl = att_len(a);
if length(t) > fl then
return(false);
if length(t) > 0 then
substr(r, att_start(a), fl) = t;
return(true);
end att_in;
att_out:
proc(a,r) ext;
/* write attribute value a from record r */
dcl
a fixed,
r char(max_siz);
put edit(substr(r,att_start(a),att_len(a)))
(x(1),a(max_chr));
end att_out;
att_len:
proc(a) returns(fixed) ext;
dcl
a fixed;
return (att_finish(a) - att_start(a) + 1);
end att_len;
accept:
proc(r) ext;
/* read record into r */
dcl
r char(max_siz),
i fixed;
r = '';
i = 1;
do while(i <= att_cnt);
call hdr_out(i);
if att_in(i,r) then
i = i + 1;
else
call att_err();
end;
end accept;
att_err:
proc ext;
put edit('Item Too Long, Retry','')
(column(4),a,skip,a);
end att_err;
display:
proc(r) ext;
/* write record r */
dcl
r char(max_siz),
i fixed;
do i = 1 to att_cnt;
call hdr_out(i);
call att_out(i,r);
end;
end display;
end io;