From: SMTP%"DSJ@WKUVX1.WKU.EDU" 9-APR-1994 15:28:13.55 To: EVERHART CC: Subj: APRIL94.STORAJ Message-Id: <9404091922.AA24062@uu7.psi.com> X-Fileserver: Digital Systems Journal File Server Date: Sat, 09 Apr 1994 14:22:52 CDT Sender: DSJ-Mgr@WKUVX1.WKU.EDU Errors-To: DSJ-Mgr@WKUVX1.WKU.EDU Warnings-To: <> From: DSJ-Mgr@WKUVX1.WKU.EDU Reply-To: DSJ@WKUVX1.WKU.EDU Subject: APRIL94.STORAJ To: EVERHART@arisia.gce.com $! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created: $! Name : STORAJ $! By : @WKUVX1.BITNET $! Date : 8-APR-1994 05:07:14.57 $! Using: VMS_SHARE 8.4, (C) 1993 Andy Harper, Kings College London UK $! $! Credit is due to these people for their original ideas: $! James Gray, Michael Bednarek $! $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER $! AND EXECUTE AS A COMMAND PROCEDURE ( @name ) $! $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING: $! 1. STORAJ.DSJ;1 $! $ set="set" $ set symbol/scope=(nolocal,noglobal) $ f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID")) $ e="write sys$error ""%UNPACK"", " $ w="write sys$output ""%UNPACK"", " $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!" $ if f$getsyi("CPU") .gt. 127 then $ goto start $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes,P4=size $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'" $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped" $ delete 'f'* $ exit $dirok: $ x=f$search(P1) $ if x .eqs. "" then $ goto file_absent $ e "-W-EXISTS, File ''P1' exists. Skipped" $ delete 'f'* $ exit $file_absent: $ w "-I-UNPACK, Unpacking ", P5, " of ", P6, " - ", P1, " - ", P4, " Blocks" $ n=P1 $ if P3 .nes. "" then $ n=f $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT/NOJOURNAL 'f'/OUT='n' PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t, SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE;PROCEDURE SkipPartsep LOCAL m; LOOP m:=MARK(NONE);EXITIF m=END_OF(b);DELETE(m);EXITIF INDEX(ERASE_LINE, "-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;PROCEDURE ProcessLine LOCAL c,s,l,b, n,p;c := ERASE_CHARACTER(1);s := ERASE_LINE;IF c = "X" THEN SPLIT_LINE; ENDIF; MOVE_HORIZONTAL(-1);l := LENGTH(s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1); p := p+1;CASE c FROM ' ' TO '`' ['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[ ' ']: p:=p+1;[INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE; PROCEDURE Decode LOCAL m;POSITION(BEGINNING_OF(b));LOOP m:=MARK(NONE);EXITIF m= END_OF(b);DELETE(m);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")= 1 THEN SkipPartSep;ELSE ProcessLine;MOVE_HORIZONTAL(1);ENDIF;ENDLOOP; ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL, OFF);t:="0123456789ABCDEF";f:=GET_INFO(COMMAND_LINE,"file_name");b:= CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,GET_INFO(COMMAND_LINE,"output_file")); QUIT; $ if p3 .eqs. "" then $ goto dl $ open/write fdl &f $ write fdl "RECORD" $ write fdl P3 $ close fdl $ w "-I-CONVRFM, Converting record format to ", P3 $ convert/fdl=&f &f-1 &P1 $dl: delete 'f'* $ checksum 'P1' $ if checksum$checksum .nes. P2 then $ - e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ exit $ endsubroutine $start: $! $ create 'f' X Xstatic-variable-0 X Xfunction-1() X`7B X`20`20`20`20`20`20`20automatic-variable-1 X`20`20`20`20`20`20`20static-variable-1 X X`20`20`20`20`20`20`20function-2(); X`20`20`20`20`20`20`20function-3();`20 X`7D X Xfunction-2() X`7B X`20`20`20`20`20`20`20automatic-variable-2 X`20`20`20`20`20`20`20static-variable-2 X X`20`20`20`20`20`20`20/*`20...`20*/`20 X`7D X Xfunction-3() X`7B X`20`20`20`20`20`20`20automatic-variable-3 X`20`20`20`20`20`20`20static-variable-3 X X`20`20`20`20`20`20`20/*`20...`20*/`20 X`7D`20 X X`0C X Xdeclaration-1`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20/*`20file`20scope`20*/ X Xfunction-1() X`7B X`20`20`20`20`20`20`20declaration-2`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20/*`20block`20scope`20*/ X X`20`20`20`20`20`20`20if`20(`20...`20)`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20declaration-3`20`20`20`20`20`20 V`20/*`20block`20scope`20*/ X X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20statement-1 X`20`20`20`20`20`20`20`7D X`20`20`20`20`20`20`20else`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20declaration-4`20`20`20`20`20`20 V`20`20/*`20block`20scope`20*/ X X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20statement-2 X`20`20`20`20`20`20`20`7D`20 X`7D X Xdeclaration-5`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20/*`20file`20scope`20*/ X Xfunction-2() X`7B X`20`20`20`20`20`20`20`20declaration-6`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20/*`20block`20scope`20*/ X X`20`20`20`20`20`20`20`20statement-3 X X`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20declaration-7`20`20`20`20`20 V`20`20/*`20block`20scope`20*/ X X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20statement-4 X`20`20`20`20`20`20`20`7D X`7D X X`0C X X#include`20`20 X#include`20 X Xmain()`20 X`7B X`20`20`20`20`20`20`20void`20f(int);`20 X/*1*/`20`20auto`20int`20i;`20`20`20`20`20`20`20`20`20`20`20`20/*`20auto`20keyw Vord`20is`20optional`20*/ X X`20`20`20`20`20`20`20for`20(i`20=`201;`20i`20<`206;`20++i)`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20f(i); X`20`20`20`20`20`20`20`7D X X`20`20`20`20`20`20`20return`200;`20 X`7D X Xvoid`20f(int`20j)`20 X`7B`20 X/*2*/`20`20auto`20double`20i`20=`20sqrt(j);`20`20/*`20auto`20keyword`20is`20op Vtional`20*/ X/*3*/`20`20int`20values`5B`5D`20=`20`7B10,`2020,`2030,`2040,`2050`7D; X X`20`20`20`20`20`20`20/*`20...`20*/`20`7D`20 X X`0C X Xvoid`20f(int`20j)`20 X`7B X`20`20`20`20`20`20`20char`20j;`20`20`20`20`20`20`20/*`20error`20-`20same`20sco Vpe`20as`20parameter`20j`20*/ X X`20`20`20`20`20`20`20/*`20...`20*/`20 X`7D X X`0C X X#include`20`20 X#include`20 X Xmain()`20 X`7B X`20`20`20`20`20`20`20void`20f(int,`20int); X`20`20`20`20`20`20`20register`20int`20i`20=`202; X`20`20`20`20`20`20`20int`20j`20=`2010; X X`20`20`20`20`20`20`20f(i,`20j); X`20`20`20`20`20`20`20return`200; X`7D X Xvoid`20f(int`20x,`20register`20int`20y)`20 X`7B X`20`20`20`20`20`20`20/*`20...`20*/`20 X`7D X X`0C X X#include`20 X Xmain() X`7B X`20`20`20`20`20`20`20int`20i; X`20`20`20`20`20`20`20void`20test(void); X X`20`20`20`20`20`20`20for`20(i`20=`201;`20i`20<=`205;`20i++) X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20test(); X X`20`20`20`20`20`20`20return`200;`20 X`7D X Xvoid`20test() X`7B X`20`20`20`20`20`20`20static`20int`20si`20=`200;`20`20`20`20`20/*`20block`20sco Vpe,`20no`20linkage`20*/ X X`20`20`20`20`20`20`20printf("si`20=`20%d`5Cn",`20++si); X`7D X X X`0C X X X#include`20 X Xstatic`20int`20si1`20=`20100;`20`20`20`20/*`20file`20scope,`20internal`20linka Vge`20*/ X Xmain() X`7B X`20`20`20`20`20`20`20void`20f(void); X`20`20`20`20`20`20`20void`20g(void); X X`20`20`20`20`20`20`20printf("main>`20si1`20=`20%d`5Cn",`20si1); X X`20`20`20`20`20`20`20si1`20+=`2010; X`20`20`20`20`20`20`20f(); X`20`20`20`20`20`20`20g(); X X`20`20`20`20`20`20`20return`200;`20 X`7D X Xstatic`20int`20si2`20=`20200;`20`20`20`20/*`20file`20scope,`20internal`20linka Vge`20*/ X Xvoid`20f() X`7B X`20`20`20`20`20`20`20printf("`20`20f>`20si1`20=`20%d,`20si2`20=`20%d`5Cn",`20s Vi1,`20si2); X`20`20`20`20`20`20`20++si2;`20 X`7D X Xvoid`20g()`20 X`7B X`20`20`20`20`20`20`20printf("`20`20g>`20si1`20=`20%d,`20si2`20=`20%d`5Cn",`20s Vi1,`20si2);`20 X`7D`20 X X`0C X X/*`20source`20file`20main.c`20*/ X X#include`20 X Xstatic`20double`20values`5B`5D`20=`20`7B1.2,`202.3,`203.4`7D;`20`20/*`20local V`20to`20main.c`20*/ X Xmain() X`7B X`20`20`20`20`20`20`20void`20sub(void); X X`20`20`20`20`20`20`20printf("main>`20values`20=`20%.1f,`20%.1f,`20%.1f`5Cn", X`20`20`20`20`20`20`20`20`20`20`20`20`20`20values`5B0`5D,`20values`5B1`5D,`20va Vlues`5B2`5D); X`20`20`20`20`20`20`20sub(); X X`20`20`20`20`20`20`20return`200; X`7D X X/*`20source`20file`20sub.c`20*/ X X#include`20 X Xstatic`20double`20values`5B`5D`20=`20`7B9.8,`208.7,`207.6,`206.5`7D;`20`20`20/ V*`20local`20to`20sub.c`20*/ X Xvoid`20sub()`20 X`7B X`20`20`20`20`20`20`20printf("`20sub>`20values`20=`20%.1f,`20%.1f,`20%.1f,`20%. V1f`5Cn", X`20`20`20`20`20`20`20`20`20`20`20`20`20`20values`5B0`5D,`20values`5B1`5D,`20va Vlues`5B2`5D,`20values`5B3`5D);`20 X X`7D`20 X X`0C X Xmain>`20values`20=`201.2,`202.3,`203.4`20 X`20sub>`20values`20=`209.8,`208.7,`207.6,`206.5`20 X X`0C X X/*`20source`20file`20main.c`20*/ X X#include`20 X Xint`20gi`20=`20100;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file V`20scope,`20external`20linkage`20*/ X Xmain() X`7B X`20`20`20`20`20`20`20void`20f(void); X X`20`20`20`20`20`20`20printf("main>`20gi`20=`20%d`5Cn",`20gi); X`20`20`20`20`20`20`20f(); X X`20`20`20`20`20`20`20return`200;`20 X`7D X Xdouble`20gd`20=`20123.456;`20`20`20`20`20`20`20`20`20/*`20file`20scope,`20exte Vrnal`20linkage`20*/ X X/*`20source`20file`20f.c`20*/ X X#include`20 X Xextern`20int`20gi;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20sco Vpe,`20external`20linkage`20*/ X Xvoid`20f()`20 X`7B X`20`20`20`20`20`20`20extern`20double`20gd;`20`20`20`20`20/*`20block`20scope, V`20external`20linkage`20*/ X X`20`20`20`20`20`20`20printf("`20`20f>`20gi`20=`20%d,`20gd`20=`20%f`5Cn",`20gi, V`20gd);`20 X`7D`20 X X`0C X Xextern`20void`20f(void);`20`20`20`20`20`20`20`20`20/*`20file`20scope,`20extern Val`20linkage`20*/`20 Xstatic`20void`20g(void);`20`20`20`20`20`20`20`20`20/*`20file`20scope,`20intern Val`20linkage`20*/ Xextern`20main()`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20sco Vpe,`20external`20linkage`20*/`20 X`7B X`20`20`20`20`20`20`20extern`20void`20h(void);`20`20/*`20block`20scope,`20exter Vnal`20linkage`20*/ X X`20`20`20`20`20`20`20f(); X`20`20`20`20`20`20`20g(); X`20`20`20`20`20`20`20h(); X X`20`20`20`20`20`20`20return`200;`20 X`7D X Xvoid`20f()`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20 Vfile`20scope,`20external`20linkage`20*/`20 X`7B X`20`20`20`20`20`20`20/*`20...`20*/`20 X`7D X Xstatic`20void`20g()`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20scope V,`20internal`20linkage`20*/`20 X`7B X`20`20`20`20`20`20`20/*`20...`20*/`20 X`7D`20 X X`0C X X/*`20--------`20source`20file`20file1.c`20----------`20*/ X Xint`20gi1;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20 Vfile`20scope,`20static,`20external`20linkage`20*/`20 Xextern`20int`20ei1`5B`5D;`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20scope V,`20static,`20external`20linkage`20*/`20 Xstatic`20int`20si1;`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20scope V,`20static,`20internal`20linkage`20*/ X Xvoid`20abc(int);`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20scope V,`20external`20linkage`20*/ X Xvoid`20f()`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20 Vfile`20scope,`20external`20linkage`20*/`20 X`7B X`20`20`20`20`20`20`20auto`20int`20ai;`20`20`20`20`20`20`20`20`20`20/*`20block V`20scope,`20automatic,`20no`20linkage`20*/ X`20`20`20`20`20`20`20register`20int`20ri;`20`20`20`20`20`20/*`20block`20scope, V`20automatic,`20no`20linkage`20*/ X`20`20`20`20`20`20`20static`20int`20si2;`20`20`20`20`20`20`20/*`20block`20scop Ve,`20static,`20no`20linkage`20*/ X X`20`20`20`20`20`20`20void`20xyz(int);`20`20`20`20`20`20`20`20/*`20block`20scop Ve,`20external`20linkage`20*/ X X`20`20`20`20`20`20`20xyz(10); X`20`20`20`20`20`20`20abc(si1`20+`20gi1`20+`20ei1`5B0`5D`20+`20si2);`20 X`7D X Xint`20gi2;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20 Vfile`20scope,`20static,`20external`20linkage`20*/`20 Xstatic`20int`20si3;`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20scope V,`20static,`20internal`20linkage`20*/ X Xstatic`20void`20g()`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20scope V,`20internal`20linkage*/`20 X`7B X`20`20`20`20`20`20`20extern`20int`20ei2`5B`5D`5B5`5D;`20`20/*`20block`20scope, V`20static,`20external`20linkage`20*/ X X`20`20`20`20`20`20`20abc(si1`20+`20gi1`20+`20si3`20+`20gi2`20+`20ei1`5B3`5D`20 V+`20ei2`5B1`5D`5B2`5D); X`20`20`20`20`20`20`20xyz();`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/* V`20undefined`20*/`20 X`7D X X/*`20--------`20source`20file`20file2.c`20----------`20*/ X Xextern`20int`20gi1;`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20scope V,`20static,`20external`20linkage`20*/`20 Xextern`20int`20gi2;`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20scope V,`20static,`20external`20linkage`20*/`20 Xint`20ei1`5B10`5D;`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file V`20scope,`20static,`20external`20linkage`20*/`20 Xint`20ei2`5B5`5D`5B20`5D;`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file V`20scope,`20static,`20external`20linkage`20*/ X Xstatic`20void`20g()`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20file`20scope V,`20internal`20linkage`20*/`20 X`7B X`20`20`20`20`20`20`20/*`20...`20*/`20 X`7D X $ call unpack STORAJ.DSJ;1 2101037000 "" 11 1 1 $ v=f$verify(v) $ exit