From: SMTP%"DSJ@WKUVX1.WKU.EDU" 18-JUL-1994 18:15:07.19 To: EVERHART CC: Subj: JUNE94.INTRNL X-FileServer: Digital Systems Journal File Server Date: Mon, 18 Jul 1994 17:14:24 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: JUNE94.INTRNL To: EVERHART@arisia.gce.com $! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created: $! Name : INTRNL $! By : Hunter Goatley $! Date : 8-JUN-1994 14:44:05.01 $! 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. INTRNL.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 X X`5Bfigure`201`5D X X/*`20#define`20_POSIX_SOURCE`20*/ X#include`20 X#include`20 X#include`20 X#include`20 X#define`20`20DBUFSIZE`20`20`20128 X X/*`20The`20call`20to`20tzset()`20causes`20tzname`5B0`5D`20to`20point`20to`20a V`20string`20that`20is`20a X`20`20`20copy`20of`20std,`20taken`20from`20the`20TZ`20environmental`20variable V.`20tzname`5B1`5D X`20`20`20points`20to`20a`20copy`20of`20dst.`20If`20TZ`20is`20not`20set`20in`20 Vthe`20environment,`20then`20the X`20`20`20pointers`20are`20set`20to`20implementation`20specific`20defaults. X*/ X Xmain() X`7B X`20`20`20`20extern`20char`20*tzname`5B2`5D; X`20`20`20`20char`20`20`20`20`20`20`20`20buffr`5BDBUFSIZE`5D,s`5BDBUFSIZE`5D; X`20`20`20`20char`20*curr_locale; X`20`20`20`20time_t`20tt1; X`20`20`20`20char`20*form1`20=`20"Today`20is`20%A`20%B`20%d`20%Y`5CnThe`20time V`20is`20%H:%M:%S`20%Z"; X X`20`20`20`20if(getenv("TZ")`20!=`20NULL)`7B X`20`20`20`20`20`20strcpy(s,getenv("TZ")); X`20`20`20`20`20`20printf("using`20getenv,`20timezone`20is:`20%s`5Cn",s); X`20`20`20`20`7D X X`20`20`20`20fputs("Current`20time:",stdout); X`20`20`20`20time(`26tt1); X`20`20`20`20fputs(ctime(`26tt1),stdout); X`20`20`20`20printf("`5CnGreenwich`20Mean`20Time`20(UCT):`20%s`5Cn",`20asctime( Vgmtime(`26tt1))); X X`20`20`20`20tzset(); X`20`20`20`20printf("TZname`20is`20either:`20%s`20or`20%s`5Cn`5Cn",tzname`5B0 V`5D,tzname`5B1`5D); X X`20`20`20`20setlocale(LC_ALL,"de_CH.88591");`20`20`20/*`20force`20to`20Swiss-G Verman`20*/ X`20`20`20`20curr_locale`20=`20setlocale(LC_ALL,`20NULL); X`20`20`20`20printf("current`20locale`20is:`20%s`5Cn`5Cn",curr_locale); X X`20`20`20`20time(`26tt1); X`20`20`20`20if(strftime(buffr,`20DBUFSIZE,`20form1,`20localtime(`26tt1))`20== V`200) X`20`20`20`20`20`20`20`20strcpy(buffr,"ERROR`20formatting`20time"); X`20`20`20`20printf("%s`5Cn",buffr); X X`7D X X== X X`5Bfigure`202`5D X X#define`20_POSIX_SOURCE X#include`20 X#include`20 X#include`20 X#include`20 X Xmain() X`7B X`20`20`20`20`20char`20*curr_locale; X`20`20`20`20`20char`20*cur_sym,`20*cur_sym1;`20 X`20`20`20`20`20int`20amt2; X`20`20`20`20`20float`20amt1; X`20`20`20`20`20char`20local`5B30`5D,dummy`5B100`5D; X`20`20`20`20`20struct`20lconv`20*p`20=`20localeconv(); X X`20`20`20`20`20printf("Enter`20desired`20locale:`20"); X`20`20`20`20`20scanf("%s",local); X X`20`20`20`20`20setlocale(LC_ALL,local); X`20`20`20`20`20curr_locale`20=`20setlocale(LC_ALL,NULL);`20`20`20`20/*`20deter Vmine`20set`20locale`20*/ X`20`20`20`20`20printf("Current`20local`20is:`20%s`5Cn`5Cn",curr_locale); X X`20`20`20`20`20localeconv(); X`20`20`20`20`20cur_sym`20=`20p->currency_symbol; X X`20`20`20`20`20amt1`20=`201234.56; X`20`20`20`20`20printf("International`20currency`20symbol:`20%s`5Cn",p->int_cur Vr_symbol); X`20`20`20`20`20amt2`20=`20amt1/1000; X`20`20`20`20`20printf("The`20amount`20is:%s`20%d%s%5.2f`5Cn",cur_sym,amt2,p->m Von_thousands_sep, X`20`20`20`20`20`20`20`20`20`20`20`20amt1`20-`20(float)(amt2*1000.)); X`7D`20 X X== X X`5Bfigure`203`5D X X X$quote`20" X$set`201 X1`20"`20No`20Smoking`5Cn" X2`20"`20Defense`20de`20fumer`5Cn" X3`20"`20Rauchen`20verboten`5Cn" X$set`202 X1`20"Hello,`20World!`5Cn" X2`20"Bonjour`20tout`20de`20monde!`5Cn" X3`20"Hallo,`20Welt!`5Cn" X$set`203 X1`20"Today`20is`20%A`20%h`20%d,`20%Y`5CnThe`20time`20is`20%I:%M:%S`20%p`5Cn" X2`20"Aujourd'hui`20est`20%A`20%d-%h-%y`5Cn`20La`20temps`20%H:%M:%S`5Cn" X3`20"Heute`20ist`20%A`20%d.%h.%y`5CnDie`20Zeit`20ist`20%H.%M.%S`5Cn" X X== X X`5Bfigure`204`5D X X#define`20_XOPEN_SOURCE X#include`20 X#include`20 X#include`20 X#include`20 X#include`20 X#define`20DBUFSIZE`20128 X Xmain() X`7B X`20`20`20`20`20char`20*curr_locale,`20*catgets(); X`20`20`20`20`20char`20local`5B30`5D,`20cat_filename`5B30`5D,`20buffr`5BDBUFSIZ VE`5D,`20form2`5BDBUFSIZE`5D; X`20`20`20`20`20int`20oflag`20=`200,`20set_num,`20msg_num; X`20`20`20`20`20time_t`20tt1; X`20`20`20`20`20nl_catd`20catd; X`20`20`20`20`20char`20*form1`20=`20"Default`20Today`20is`20%A`20%B`20%d`20%Y V`5CnThe`20time`20is`20%H:%M:%S"; X X`20`20`20`20`20printf("Enter`20name`20of`20the`20catalog`20file:`20"); X`20`20`20`20`20scanf("%s",cat_filename); X X/*`20on`20OSF/1`20you`20might`20try:`20 X`20`20`20`20`20`20`20`20`20`20C`20for`20standard X`20`20`20`20`20`20`20`20`20`20fr_FR.88591`20for`20French X`20`20`20`20`20`20`20`20`20`20de_DE.88591`20for`20German X*/ X`20`20`20`20`20printf("Enter`20desired`20locale:`20"); X`20`20`20`20`20scanf("%s",local); X X`20`20`20`20`20setlocale(LC_ALL,local); X`20`20`20`20`20curr_locale`20=`20setlocale(LC_ALL,NULL);`20`20`20`20/*`20deter Vmine`20set`20locale`20*/ X`20`20`20`20`20printf("Current`20local`20is:`20%s`5Cn`5Cn",curr_locale); X X`20`20`20`20`20catd`20=`20catopen(cat_filename,`20oflag); X`20`20`20`20`20set_num`20=`201;`20`20`20/*`20use`20the`20first`20catalog`20dom Vain`20*/ X`20`20`20`20`20msg_num`20=`201;`20`20`20/*`20default`20to`20American`20English V`20*/ X`20`20`20`20`20if(strncmp(local,"fr_FR",5)`20==`200)msg_num`20=`202;`20/*`20se Vlect`20French`20*/ X`20`20`20`20`20if(strncmp(local,"de_DE",5)`20==`200)msg_num`20=`203;`20/*`20se Vlect`20German`20*/ X X/*`20.`20.`20.`20now`20the`20country`20code`20is`20set,`20let`20us`20say`20som Vething`20else`20.`20.`20.`20*/ X X`20`20`20`20`20printf(catgets(catd,set_num,msg_num,"No`20Smoking`20 V`5Cn")); X`20`20`20`20`20set_num`20=`202;`20`20`20/*`20and`20now`20for`20message`20catal Vog`202`20*/ X`20`20`20`20`20printf(catgets(catd,set_num,msg_num,"Hello`20`5Cn")); V X X/*`20.`20.`20.`20let`20us`20get`20fancy`20and`20get`20the`20time`20correctly V`20.`20.`20.`20*/ X X`20`20`20`20`20time(`26tt1); X`20`20`20`20`20set_num`20=`203;`20`20/*`20and`20now`20for`20message`20catalog V`203`20*/ X`20`20`20`20`20sprintf(form2,"%s",catgets(catd,set_num,msg_num,form1)); X`20`20`20`20`20if(strftime(buffr,`20DBUFSIZE,`20form2,`20localtime(`26tt1))`20 V==`200) X`20`20`20`20`20`20`20`20strcpy(buffr,"ERROR`20formatting`20time"); X`20`20`20`20`20printf("%s`5Cn",buffr); X X`20`20`20`20`20catclose(catd); X`7D`20 X X== X $ call unpack INTRNL.DSJ;1 1596853541 "" 9 1 1 $ v=f$verify(v) $ exit