|
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: 31488 (0x7b00) Types: TextFile Names: »tsystest7 «
└─⟦9ccaf6601⟧ Bits:30008165 Bånd med SW8000 kildetekst/release værktøjer └─⟦f546e193b⟧ └─⟦this⟧ »tsystest7 «
message de enkelte måleprocedurer part 3 (tsystest7); boolean procedure mål_proc (målno); value målno; integer målno; begin long an; integer bu, sh, se, gl_blocksread; long array di1, di2 (1 : 2); boolean procedure udfør_mål_proc (målno, antal, buflgd, shares, segm, disc1, disc2); value antal; long antal; integer målno, buflgd, shares, segm; long array disc1, disc2; begin long an; procedure find_segm (disc, segm, slice, perm); long array disc; integer segm, slice, perm; begin <* find segm *> integer s1, s2; s1 := segm; xbsclaim (0, s1, 1, slice, perm, disc); if perm <> 0 <* se om færre temp segm *> then xclaimproc (0, - 2, disc, 0, s2, 0) else s2 := s1; if s2 < s1 then s1 := s2; <* ellers kan der ikke oprettes segm nok *> if segm <= 0 or segm > s1 then segm := s1; end procedure find_segm; udfør_mål_proc := true; <* marker foreløbig ok *> if test or kl then wr_test (<:begin:>, målno); if not online then begin <* marker målno i tail (10) *> if monitor (42, out, 0, ia) = 0 then begin <* lookup ok *> ia (10) := målno; ia (6) := systime (7, 0, 0.0); monitor (44, out, 0, ia); <* changeentry *> end lookup ok; end marker målno; if segm >= 1 and buflgd >= 1 then segm := segm // buflgd * buflgd; <* tilpas til buflgd *> if målno = 1 then begin <* for-løkke *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 100 000 <* estimeret rc8000 *> else an := sek * 325 000; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:For løkke:>); if online then setposition (out, 0, 0); mål_for (an); skriv_tid (<:loop:>, an); end for else if målno = 2 then begin <* repeat *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 50 000 <* estimeret rc8000 *> else an := sek * 150 000; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Repeat løkke:>); if online then setposition (out, 0, 0); mål_repeat (an); skriv_tid (<:loop:>, an); end repeat else if målno = 3 then begin <* while *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 60 000 <* estimeret rc8000 *> else an := sek * 225 000; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:While løkke:>); if online then setposition (out, 0, 0); mål_while (an); skriv_tid (<:loop:>, an); end while else if målno = 11 then begin <* integer *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Integer regning (+, -, *, //):>); if online then setposition (out, 0, 0); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 300 000 // 8 <* estimeret rc8000 *> else an := sek * 550 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Addition med positive integers:>); if online then setposition (out, 0, 0); mål_i_plus_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 300 000 // 8<* estimeret rc8000 *> else an := sek * 550 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Addition med negative integers:>); if online then setposition (out, 0, 0); mål_i_plus_neg (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 300 000 // 8 <* estimeret rc8000 *> else an := sek * 550 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Subtraktion med positive integers:>); if online then setposition (out, 0, 0); mål_i_minus_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 300 000 // 8 <* estimeret rc8000 *> else an := sek * 550 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Subtraktion med negative integers:>); if online then setposition (out, 0, 0); mål_i_minus_neg (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 100 000 // 8 <* estimeret rc8000 *> else an := sek * 550 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Multiplikation med positive integers:>); if online then setposition (out, 0, 0); mål_i_gange_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 100 000 // 8 <* estimeret rc8000 *> else an := sek * 550 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Multiplikation med negative integers:>); if online then setposition (out, 0, 0); mål_i_gange_neg (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 85 000 // 8 <* estimeret rc8000 *> else an := sek * 200 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Division med positive integers:>); if online then setposition (out, 0, 0); mål_i_div_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 85 000 // 8 <* estimeret rc8000 *> else an := sek * 200 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Division med negative integers:>); if online then setposition (out, 0, 0); mål_i_div_neg (an); skriv_tid (<:stk:>, an); end integer else if målno = 12 then begin <* long *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Long regning (+, -, *, //):>); if online then setposition (out, 0, 0); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 175 000 // 8 <* estimeret rc8000 *> else an := sek * 300 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Addition med positive longs:>); if online then setposition (out, 0, 0); mål_l_plus_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 175 000 // 8 <* estimeret rc8000 *> else an := sek * 300 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Addition med negative longs:>); if online then setposition (out, 0, 0); mål_l_plus_neg (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 110 000 // 8 <* estimeret rc8000 *> else an := sek * 300 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Subtraktion med positive longs:>); if online then setposition (out, 0, 0); mål_l_minus_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 110 000 // 8 <* estimeret rc8000 *> else an := sek * 300 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Subtraktion med negative longs:>); if online then setposition (out, 0, 0); mål_l_minus_neg (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 12 000 // 8 <* estimeret rc8000 *> else an := sek * 50 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Multiplikation med positive longs:>); if online then setposition (out, 0, 0); mål_l_gange_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 12 000 // 8 <* estimeret rc8000 *> else an := sek * 50 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Multiplikation med negative longs:>); if online then setposition (out, 0, 0); mål_l_gange_neg (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 12 000 // 8 <* estimeret rc8000 *> else an := sek * 35 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Division med positive longs:>); if online then setposition (out, 0, 0); mål_l_div_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 12 000 // 8 <* estimeret rc8000 *> else an := sek * 35 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Division med negative longs:>); if online then setposition (out, 0, 0); mål_l_div_neg (an); skriv_tid (<:stk:>, an); end long else if målno = 13 then begin <* real *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Real regning (+, -, *, /):>); if online then setposition (out, 0, 0); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 55 000 // 8 <* estimeret rc8000 *> else an := sek * 100 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Addition med positive reals:>); if online then setposition (out, 0, 0); mål_r_plus_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 55 000 // 8 <* estimeret rc8000 *> else an := sek * 100 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Addition med negative reals:>); if online then setposition (out, 0, 0); mål_r_plus_neg (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 55 000 // 8 <* estimeret rc8000 *> else an := sek * 100 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Subtraktion med positive reals:>); if online then setposition (out, 0, 0); mål_r_minus_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 55 000 // 8 <* estimeret rc8000 *> else an := sek * 100 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Subtraktion med negative reals:>); if online then setposition (out, 0, 0); mål_r_minus_neg (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 30 000 // 8 <* estimeret rc8000 *> else an := sek * 125 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Multiplikation med positive reals:>); if online then setposition (out, 0, 0); mål_r_gange_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 30 000 // 8 <* estimeret rc8000 *> else an := sek * 125 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Multiplikation med negative reals:>); if online then setposition (out, 0, 0); mål_r_gange_neg (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 30 000 // 8 <* estimeret rc8000 *> else an := sek * 90 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Division med positive reals:>); if online then setposition (out, 0, 0); mål_r_div_pos (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 30 000 // 8 <* estimeret rc8000 *> else an := sek * 90 000 // 8; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Division med negative reals:>); if online then setposition (out, 0, 0); mål_r_div_neg (an); skriv_tid (<:stk:>, an); end real else if målno = 14 then begin <* exponentiation *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Exponentiationsberegninger (x ** y):>); if online then setposition (out, 0, 0); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 3 500 // 3 <* estimeret rc8000 *> else an := sek * 15 000 // 3; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Integer:>); if online then setposition (out, 0, 0); mål_i_exp (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 3 000 // 3 <* estimeret rc8000 *> else an := sek * 10 000 // 3; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Long:>); if online then setposition (out, 0, 0); mål_l_exp (an); skriv_tid (<:stk:>, an); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 1 500 // 3 <* estimeret rc8000 *> else an := sek * 4 500 // 3; <* estimeret rc9000 *> writeint (out, "nl", 1, <<d>, <:Real:>); if online then setposition (out, 0, 0); mål_r_exp (an); skriv_tid (<:stk:>, an); end exponentiation else if målno = 21 then begin <* tofrom *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 800 <* estimeret rc8000 *> else an := sek * 2 500; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Tofrom lagerflytninger:>); if online then setposition (out, 0, 0); mål_tofrom ((an + 2) // 3); <* der arbejdes på 3 k af gangen *> skriv_tid (<:kbyte:>, (an + 2) // 3 * 3); end tofrom else if målno = 22 then begin <* system-5 *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 200 <* estimeret rc8000 *> else an := sek * 1 000; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:System-5 lagerflytninger:>); if online then setposition (out, 0, 0); mål_system5 ((an + 2) // 3); <* der arbejdes på 3 k af gangen *> skriv_tid (<:kbyte:>, (an + 2) // 3 * 3); end system5 else if målno = 23 then begin <* gettime *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 3 250 <* estimeret rc8000 *> else an := sek * 10 000; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Systime-1 gettime:>); if online then setposition (out, 0, 0); mål_systime1 (an); skriv_tid (<:stk:>, an); end gettime else if målno = 31 then begin <* sieve *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 1 <* estimeret rc8000 *> else an := sek * 6; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Sieve-benchmark (8190):>); if online then setposition (out, 0, 0); mål_sieve (an, 8190); skriv_tid (<:stk:>, an); end sieve else if målno = 32 then begin <* quicksort *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := (sek + 9) // 10 * 2 <* estimeret rc8000 *> else an := (sek + 9) // 10 * 7; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Quicksort (10000 words):>); if online then setposition (out, 0, 0); mål_qsort (an, 10 000); skriv_tid (<:stk:>, an); end qsort else if målno = 33 then begin <* shellsort *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := (sek + 38) // 39 * 1 <* estimeret rc8000 *> else an := (sek + 8) // 9 * 1; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Shellsort (10000 words):>); if online then setposition (out, 0, 0); mål_ssort (an, 10 000); skriv_tid (<:stk:>, an); end ssort else if målno = 34 then begin <* heapsort *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := (sek + 14) // 15 * 1 <* estimeret rc8000 *> else an := (sek + 2) // 3 * 1; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Heapsort (10000 words):>); if online then setposition (out, 0, 0); mål_hsort (an, 10 000); skriv_tid (<:stk:>, an); end hsort else if målno = 35 then begin <* matrix *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := (sek + 9) // 10 * 4 <* estimeret rc8000 *> else an := (sek + 9) // 10 * 20; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Matrixberegning (32x32 words):>); if online then setposition (out, 0, 0); mål_matrix (an, 32); skriv_tid (<:stk:>, an); end matrix else if målno = 36 then begin <* fmatrix *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := (sek + 9) // 10 * 3 <* estimeret rc8000 *> else an := (sek + 9) // 10 * 13; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Matrixberegning med flydende tal (32x32 reals):>); if online then setposition (out, 0, 0); mål_fmatrix (an, 32); skriv_tid (<:stk:>, an); end fmatrix else if målno = 41 then begin <* create *> find_segm (disc1, segm, 0, 2); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 5 <* estimeret rc8000 *> else an := sek * 5; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Create file (opret, permanent, clear):>, <: på :>, disc1, <:, :>, segm, <: segm/fil :>); if online then setposition (out, 0, 0); mål_create (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:stk:>, an); end create else if målno = 42 then begin <* change size *> find_segm (disc1, segm, buflgd, 2); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 10 <* estimeret rc8000 *> else an := sek * 10; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Ret fil, fillængde:>, <: på :>, disc1, <:, :>, segm, <: segm/fil :>); if online then setposition (out, 0, 0); mål_changesize (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:stk:>, an); end changesize else if målno = 43 then begin <* change tail *> find_segm (disc1, segm, 0, 2); if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 10 <* estimeret rc8000 *> else an := sek * 10; <* estimeret rc9000 *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Ret fil, tail (10):>, <: på :>, disc1, <:, :>, segm, <: segm/fil :>); if online then setposition (out, 0, 0); mål_changetail (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:stk:>, an); end changetail else if målno = 51 then begin <* write seq *> if segm > 0 then antal := antal * segm; <* antal som segmenter *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 50 * ((buflgd + 2) // 3) <* estimeret rc8000 *> else an := sek * 50 * ((buflgd + 2) // 3); <* estimeret rc9000 *> find_segm (disc1, segm, 0, 0); if segm > an then segm := an; <* max antal segmenter *> segm := segm // buflgd * buflgd; <* helt antal buffere *> an := (an + segm - 1) // segm; <* antal som hele filer *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Seq-write:>, <: på :>, disc1, <:, :>, segm, <: segm/fil, :>, shares, <:'bufret, :>, buflgd, <: segm/blok :>); if online then setposition (out, 0, 0); mål_wseq (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:segm:>, an * segm); end wseq else if målno = 52 then begin <* read seq *> if segm > 0 then antal := antal * segm; <* antal som segmenter *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 50 * ((buflgd + 2) // 3) <* estimeret rc8000 *> else an := sek * 50 * ((buflgd + 2) // 3); <* estimeret rc9000 *> find_segm (disc1, segm, 0, 0); if segm > an then segm := an; <* max antal segmenter *> segm := segm // buflgd * buflgd; <* helt antal buffere *> an := (an + segm - 1) // segm; <* antal som hele filer *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Seq-read:>, <: på :>, disc1, <:, :>, segm, <: segm/fil, :>, shares, <:'bufret, :>, buflgd, <: segm/blok :>); if online then setposition (out, 0, 0); mål_rseq (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:segm:>, an * segm); end rseq else if målno = 53 then begin <* write random *> if segm > 0 then antal := antal * segm; <* antal som segmenter *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 50 * ((buflgd + 2) // 3) <* estimeret rc8000 *> else an := sek * 50 * ((buflgd + 2) // 3); <* estimeret rc9000 *> find_segm (disc1, segm, 0, 0); if segm > an then segm := an; <* max antal segmenter *> segm := segm // buflgd * buflgd; <* helt antal buffere *> an := (an + segm - 1) // segm; <* antal som hele filer *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Rand-write:>, <: på :>, disc1, <:, :>, segm, <: segm/fil, :>, shares, <:'bufret, :>, buflgd, <: segm/blok :>); if online then setposition (out, 0, 0); mål_wrand (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:segm:>, an * segm); end wrand else if målno = 54 then begin <* read random *> if segm > 0 then antal := antal * segm; <* antal som segmenter *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 50 * ((buflgd + 2) // 3) <* estimeret rc8000 *> else an := sek * 50 * ((buflgd + 2) // 3); <* estimeret rc9000 *> find_segm (disc1, segm, 0, 0); if segm > an then segm := an; <* max antal segmenter *> segm := segm // buflgd * buflgd; <* helt antal buffere *> an := (an + segm - 1) // segm; <* antal som hele filer *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Rand-read:>, <: på :>, disc1, <:, :>, segm, <: segm/fil, :>, shares, <:'bufret, :>, buflgd, <: segm/blok :>); if online then setposition (out, 0, 0); mål_rrand (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:segm:>, an * segm); end rrand else if målno = 55 then begin <* opdat random *> if segm > 0 then antal := antal * segm; <* antal som segmenter *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 25 * ((buflgd + 2) // 3) <* estimeret rc8000 *> else an := sek * 25 * ((buflgd + 2) // 3); <* estimeret rc9000 *> find_segm (disc1, segm, 0, 0); if segm > an then segm := an; <* max antal segmenter *> segm := segm // buflgd * buflgd; <* helt antal buffere *> an := (an + segm - 1) // segm; <* antal som hele filer *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Rand-opdat (read/rewrite):>, <: på :>, disc1, <:, :>, segm, <: segm/fil, :>, shares, <:'bufret, :>, buflgd, <: segm/blok :>); if online then setposition (out, 0, 0); mål_orand (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:segm:>, an * segm); end rrand else if målno = 56 then begin <* write cross *> if segm > 0 then antal := antal * segm; <* antal som segmenter *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 50 * ((buflgd + 2) // 3) <* estimeret rc8000 *> else an := sek * 50 * ((buflgd + 2) // 3); <* estimeret rc9000 *> find_segm (disc1, segm, 0, 0); if segm > an then segm := an; <* max antal segmenter *> segm := segm // buflgd * buflgd; <* helt antal buffere *> an := (an + segm - 1) // segm; <* antal som hele filer *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Kryds-write:>, <: på :>, disc1, <:, :>, segm, <: segm/fil, :>, shares, <:'bufret, :>, buflgd, <: segm/blok :>); if online then setposition (out, 0, 0); mål_wcross (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:segm:>, an * segm); end wcross else if målno = 57 then begin <* read cross *> if segm > 0 then antal := antal * segm; <* antal som segmenter *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 50 * ((buflgd + 2) // 3) <* estimeret rc8000 *> else an := sek * 50 * ((buflgd + 2) // 3); <* estimeret rc9000 *> find_segm (disc1, segm, 0, 0); if segm > an then segm := an; <* max antal segmenter *> segm := segm // buflgd * buflgd; <* helt antal buffere *> an := (an + segm - 1) // segm; <* antal som hele filer *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Kryds-read:>, <: på :>, disc1, <:, :>, segm, <: segm/fil, :>, shares, <:'bufret, :>, buflgd, <: segm/blok :>); if online then setposition (out, 0, 0); mål_rcross (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:segm:>, an * segm); end rcross else if målno = 58 then begin <* opdat cross *> if segm > 0 then antal := antal * segm; <* antal som segmenter *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 25 * ((buflgd + 2) // 3) <* estimeret rc8000 *> else an := sek * 25 * ((buflgd + 2) // 3); <* estimeret rc9000 *> find_segm (disc1, segm, 0, 0); if segm > an then segm := an; <* max antal segmenter *> segm := segm // buflgd * buflgd; <* helt antal buffere *> an := (an + segm - 1) // segm; <* antal som hele filer *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Kryds-opdat:>, <: på :>, disc1, <:, :>, segm, <: segm/fil, :>, shares, <:'bufret, :>, buflgd, <: segm/blok :>); if online then setposition (out, 0, 0); mål_ocross (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:segm:>, an * segm); end ocross else if målno = 59 then begin <* disckopiering *> integer s1, s2, sl, se; if segm > 0 then antal := antal * segm; <* antal som segmenter *> if antal > 0 then an := antal <* antal som parameter *> else if rc8000 then an := sek * 35 * ((buflgd + 2) // 3) <* estimeret rc8000 *> else an := sek * 35 * ((buflgd + 2) // 3); <* estimeret rc9000 *> s1 := s2 := segm; find_segm (disc1, s1, sl, 0); if disc1 (1) = disc2 (1) and (disc1 (1) extract 8 = 'nul' or disc1 (2) = disc2 (2)) then s1 := s2 := (s1 + sl - 1) // sl // 2 * sl <* samme disk *> else find_segm (disc2, s2, sl, 0); segm := if s1 <= s2 then s1 else s2; if segm > an then segm := an; <* max antal segmenter *> segm := segm // buflgd * buflgd; <* helt antal buffere *> an := (an + segm - 1) // segm; <* antal som hele filer *> writeint (out, "nl", 2, <<zddd.dd>, xkl, ":", 1, <<d>, <:Filkopiering:>, <: :>, disc1, <:->:>, disc2, <:, :>, segm, <: segm/fil, :>, shares * 2, <:'bufret, :>, buflgd, <: segm/blok :>); if online then setposition (out, 0, 0); mål_dcopy (an, buflgd, shares, segm, disc1, disc2); skriv_tid (<:segm:>, an * segm); end dcopy else udfør_mål_proc := false; <* ukendt test *> if test or kl then wr_test (<:end :>, målno); if online then setposition (out, 0, 0); end procedure udfør_mål_proc; if not trapstop then trap (trap_ud); an := antal; bu := buflgd; se := maxsegm; tofrom (di1, disc1, 8); tofrom (di2, disc2, 8); gl_blocksread := blocksread; if målno >= 50 and målno <= 59 then begin <* disk io *> sh := 0; repeat sh := if shares > 0 then shares else sh + 1; bu := 0; repeat if buflgd > 0 then bu := buflgd else if bu <= 0 then bu := 1 else if bu = 1 then bu := 32 else if bu = 32 then bu := 46 else if målno = 59 then begin bu := xmaxbuflgd (1, if corelock then 4000 else 10000, true) // (sh * 2) // 512; if bu > 736 then bu := 736; end; if bu >= 1 then mål_proc := udfør_mål_proc (målno, an, bu, sh, se, di1, di2); until buflgd > 0 or bu < 1 or bu >= 46 and målno <> 59 or bu > 46 and målno = 59; until shares > 0 or målno >= 53 or sh >= 2; end else mål_proc := udfør_mål_proc (målno, an, bu, sh, se, di1, di2); if not datatest and blocksread <> gl_blocksread then write (out, "nl", 1, <<d>, <:*** Segmentering under ovenstående måling, antal segm.:>, blocksread - gl_blocksread); if false then trap_ud: begin xwritealarm; xtrapbreak; fejl (<:programnedgang:>, - 1); end; end procedure mål_proc; ▶EOF◀