|
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: 2304 (0x900) Types: TextFile Names: »tshlengthsq «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code └─⟦75ff9bef3⟧ └─⟦this⟧ »tshlengthsq «
( head 1 if 0.yes shlengthsq = algol spill.yes blocks.yes bossline.yes list.yes survey.yes xref.yes if 0.no shlengthsq = algol spill.yes survey.yes ) sq-system, shlengthsq release 13.0, eah, 01.02.81 external integer procedure shlengthsq(doc); string doc; comment calculates the sharelength for a sq-file. call: shlengthsq(doc) shlengthsq (return value, integer) blocklength of the file expressed in doublewords, or, if =0, indication of filetrouble, see results. doc (call value, string) the name of a backing storage area. functions: doc is looked up in the catalog, and if it exists and content =21, 20, or 0, the sharelength ( = blocklength) is calculated from tail(9). requirements: doc must describe a backing storage area. results: resultsq = 1 ok = 2 error in tail(9) = 3 doc not found ; begin integer monres, segsperblock, contents; integer array zonedescr, tail(1:20); zone help(1, 1, stderror); long array field docname; resultsq:= 1; open(help, 0,doc,0); getzone6(help, zonedescr); docname:= 2; if zonedescr.docname(1) extract 8 = 0 then begin zonedescr.docname(2):= 0; setzone6(help, zonedescr); end; monres:= monitor(42 <*lookup entry tail*>, help, 0, tail); contents:= tail(9) shift (-12); segsperblock:= tail(9) extract 12; if monres = 0 <*ok*> then begin if segsperblock < 1 or ( contents <> 21 and contents <> 20 and contents <> 0) then resultsq:= 2; end else if monres = 3 <*not found*> then resultsq:= 3 else begin comment catalog error or name format possibly; zonedescr.docname(2):= zonedescr.docname(2) shift (-8) shift 8; write(out, <:<10>***shlengthsq on:>, zonedescr.docname); system(9, monres, <:<10>lookup :>); end; close(help, true); shlengthsq:= if resultsq <> 1 then 0 else segsperblock*128; end procedure shlengthsq; end end ▶EOF◀