TE006143*nTXs'h:Yg2M9RNTargetAVFNCREEosintrl0l1l2l3FORMEDEFINESMJEOfREADl0l1l2FIXABCabcTIEL0ER1 DESCRIBENAMESversionFiLeNaMeLiTil3l4NmFiLeXFRALL9899IolXBslAXlTSharpAPLBZAVAVnCsR12aLlrEphIdsRh98067DeFTXTREPLCNal599OSS989796959493Mv9291pO9089UpLu888786858483827581807978777674PNAMES73READOSRpUw99ObJw98w97ShLw96w95w94w93w92w91w90w89w88w87OBJpPACKlalbPINSFNcnv101525EnD273035FiLLuPVaRL30NeXL35L40FrPL50XFRFILENFILEAPLFILEVARFTSENTL10XFRFILEGETPACK equivalencezfnafopentnoijl2l1l0closefrascreatefilel10hdlopenwreadxFrntoreadbufsourcel5 readBufl7xll20recwritehandleFXrepspencloseXsallXfrObjsfnboutcrcomline0line1tmatl60l30l160l120l130 copyrightX99cOdecreateX98X97dFnX96obJX95X94X93X92X91X90X89X88X87fixPchkPackPinsNaM describebb1ddlmfbcl12endCodTtxtreplEXPforiFMW99vaLueformeW98W97W96vAlW95W94W93W92PnamesPncW91W90W89PvalW88W87W86W85W84W83W82W81W80W79W78W77PselnameofstrparmspatnparseargeppatqspswswitDErmerrorcmmeml3chkcompl4TSllbrmaskposssupNCUWl25l40l50xfroNSArGxfrfrombUfinWsrEftIExlatenoamaplasciicRdebugfilelistobjsqrange replacetransinfilerobxfrtoArglnLtXfrIDlockr_v_n_id_c_b_N_O_PisIDoko_idxnamesclcnreplmsgobjtiecptrngfszamslistamnoshowPSYSIDPACKERRSPACKBINDEBROWFINDSStoMAT01234120345testifaeachdepthenlistfindwithoutfirstenclose partitionindexindexpickdisclosefmtfc_FwriteFreadFholdFdropetlerecerxconfafatccCSdbrEDITermSIGNALelseevhchostmountovSItftimettwewiendifPDEFSOURCEXZ?{Gz@Xn ]? :SAPL replace%FREPLACE appendr%FAPPEND signal%SIGNAL resize%FRESIZE create%FCREATE rename%FRENAME append%FAPPENDnor pnames%Pnames ;trap%;ELX avail%FAVAIL names%FNAMES erase%FERASE untie%FUNTIE ppdef%Ppdef plock%Plock 6 fd%ERASE 3 fd%DEF SINL%SINL trap%ELX rdfi%RDFI rdci%FRDCI size%FSIZE nums%FNUMS rdac%FRDAC stac%FSTAC hold%FHOLD read%FREAD stie%FSTIE drop%FDROP copy%FDUP pdef%Pdef psel%Psel pins%Pins pack%Pack pval%Pval EDIT%EDIT lib%FLIB tie%FTIE ><<% pnc%Pnc pex%Pex out%OUT fmt%FMT vi%VI fi%FI ws%WS fd%FD er%er_ ><% ec%ec_ sc%sc_ ps%ps_ sp%sp_ ht%ht_ ul%1 ws%WS fd%FD fc%fc_ >% >% <% <% enc % boxed <.%<. .%>. >/%>/ >%> >\%>\ >%> (<%( <% \<%\ <% <% <% <% <% <% <% <% <% ,<%, <% /<%/ <% (>%( +>%+ >% >% <>%< >% =>%= >% >>%> >% >% ^>%^ ->%- >% >% !>%! >% >% >% >% \>%\ >% >% >% >% ~>%~ >% >% >% >% >% *>%* >% [>%[ >% >% >% >% >% #<% #>% >% >% >% >% >% ,>%, >% ?>%? />%/ >% >% Rank >% Upon %a_ %w_ % lev % dex % @% index &% merge % ibeam % Rank % Upon :DYW IOVFI%FI IOVFI%VI MONITOR%MF SIGNAL%SIGNAL SHADOW%SHADOW ;trap%;ELX FHIST%RDFI size%SIZE SINL%SINL PATH%PATH TRAP%ELX "210"% notmatch "47"%"22" SI%SI ED%EDIT ML%ML % union % intersect :APX "210"%"22" 2 CR%VR SINL%SINL "175"% index EDIT%EDIT ERS%SIGNAL "11"% Fread "12"% Fwrite SI%SI ES%ERROR "9"% Fdrop "7"% Fhold EM%DM UL%1 FC%fc_ R%TCNL L%TCLF B%TCBS /%/ % `Y ]?Y  ; ; ;%w_Y`Y %Y00010000;# share tie the file name if it exists; otherwise, create it.%VI M%YPY *Y00020000# specifies the tie number and optional passnumber.SIZE*Y`%Y 0Y00030000# the lowest available tie number is chosen automatically if 0.ML%ML % un0YP*Y 5Y00040000# the result is the actual tie number of the file. EDIT5Y`0Y ;Y00050000 (    )/   # remove unwanted blanksD;YP5Y @Y00060000.( (/ C$)/ %) # check if already tied@Y@;Y DY00070000# set trap for 'file name' errorsDY @Y FY00080000 FY@DY JY00090000.(-  )   JYPFY OY00100000# pick lowest free tie number if user gave zero or lessendr%OYPJY TY00110000 ( ((   )   ) ) AME appeTY0OY WY00120000# attempt to tie the fileavaiWY@TY [Y00130000 : (  )    .[Y`WY aY00140000# file does not exist, create it; exit if no passnumber complications size%aY@[Y eY00150000 :  notr# do not modify this fnad%eY aY gY00160000%FDROPgY@eY kY00170000  .(  )ck pval%PkY@gY oY00180000# if a passnumber was given, activate itx%PexoYPkY tY00190000( [] )    .%ec_ sctYPoY yY00200000# file is already tied; exit if tie number acceptable <% eyY@tY 00210000 :. 0    >/%>/ >%> }YF]?~Y ~Y0}Y Y00010000# close the current fileY ~Y 000200002 Y ^]?Y  ;YPY Y00010000;# danb 19981104 create native file. as is approximate sizeY@Y Y00020000  ((  )  ) Y Y Y00030000l10Y0Y Y00040000# file should not existY Y Y00050000 ( Y Y Y00060000 % Y Y Y00070000 :Y Y 00080000 $ Y v]?Y  117 118 119 1Y@Y Y00010000# danb 1998 open file, return handle138 139 1Y@Y Y00020000 (  ((  )  ) 5 1Y0Y Y00030000# file MUST exist65 166 167 1Y@Y 00040000  : # must return for APL/PC182 183 1LY0]?Y  ; ;; ; ; J' ')obJ  obYPY Y00010000# read an opened file, leave it open & return the next objectY`Y Y00020000# xFr is the handle to the file followed by # chars left to read] (/X88(Y@Y Y00030000.(7 readBuf)  93] [26] obJYPY Y00040000# read up to 10K - account for what's in the buffer[28] X97YPY Y00050000 :  []R( [] []  xYPY Y00060000.(- ) # not enough chars, read someting fn if pacY@Y Y00070000 [] []  4 s. We do this sY Y Y00080000   Y@Y Y00090000# we need to know how many to read3] X96X9YPY Y00100000 :.(  )# there's a least 7 chars hereX97  X94Y@Y Y00110000            Y0Y Y00120000 :    # enough? X93YPY Y00130000       .(   )X97 Pack obJ Y@Y Y00140000# if more chars are needed we grab them herelY0Y Y00150000 []( []7] YPY Y00160000.(  4 ) no more chars!8] X94X99  Y@Y 00170000 :  .  [] []  obJ Y ]?Y * *Y@Y Y00010000# danb 19981013 translate textY0Y Z00020000.(7xlate)Z0Y 00030000 * J[( *]Z]?Z Z@Z Z00010000# write rec to file associated with handle Z Z 00020000 & $ Z ]? Z  ; ; ; ; Z@ Z Z00010000# danb 2003 change representationZ@ Z Z00020000.(    ) # matrices are fineZPZ Z00030000# +Win won't accept a vector representation w/o line #sZPZ Z00040000.(  ) # decorators? yes, exit nowZ@Z #Z00050000# no decorators, return matrix#Z0Z &Z00060000 /  &Z`#Z ,Z00070000   .. / (  )   /    ,Z0&Z 00080000   \(0 )/ /Z ]?$ []();/\+-*^<=>,!?~ _}{abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. ':  |`#@"%&   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    %'_abcdefghijklmnopqrstuvwxyz.0123456789$ABCDEFGHIJKLMNOPQRSTUVWXYZ{}[/\<=>^-+?~*( ;,!"#&@`|:)]  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ | ! )<=>]^,+./0123456789([;:\_{'*?~ -ABCDEFGHIJKLMNOPQRSTUVWXYZ$}"#%&@`abcdefghijklmnopqrstuvwxyz"Z ]?Z  ; ,; +Z@Z Z00010000# DanB 1998 all names not usedZ`Z Z00020000 ,   +[] , , + Z@Z Z00030000 (/ . + )  , Z@Z Z00040000 ( [; ].) Z0Z Z00050000 ( , ) Z0Z Z00060000 +lx pw io ct Z@Z Z00070000 +((( +))) +Z@Z 00080000 ((( +) ,) +)[] Z]?' ROWFIND SStoMAT all bout infile copyright create describe equivalencefix fopen fori forme nameof parse txtrepl version xfr xfrfrom xfrto xl close create open read write FX XfrObjs Xs Pack Pchk Pins PACKBIN Pnames Pnc Psel Pval PACKERRS PSYSID ?[0^?[  ; ;; ; ; ; ; [[ "[00010000 .(/  )    .(/{   ) ( )     .( / )          .( / )  (( )/[1] ) . "[@[ &[00020000 : (  )    &[0"[ )[00030000 :    )[`&[ /[00040000 :  \( 0  {})/   (- )/  ./[)[ =[00050000 :.(/{  [;])  (   / )    .( / )          .(  )  (  )[]  .=[ /[ F[00060000 : (   / )  [;]     .(   )  ( [] ) F[@=[ J[00070000 : [;](  ) J[PF[ 00080000 : [;]( ) \( 0  {})/ O[ N^?Copyright Milinta inc 1999+ You are granted a licence to use this code provided it is for private use and the code is not modified. Contact support@milinta.com for details or report problems.(\[@`^?`[  ; ; ; ; ; ; ; ; ; ; ; ; ; {`[P\[ e[00010000# DanB 1990 (c) Create obJs defined in string. V3se[``[ k[00020000# Works in stream mode where it returns unused portion or by objectted a licek[@e[ o[00030000# where left arg is specified and meaning iseo[Pk[ t[00040000# 0=Create, 1=return Value and put name in global 'NaM's. t[`o[ z[00050000# 3=return package. With a left argument an exact defn is given.sz[Pt[ [00060000# For non var only codes 0 & 3 are meaningful.s[ z[ [00070000#s[`[ [00080000 -( ( )7oNS) 0oNS# where to put thesese this c[`[ [00090000  (   ) .# namespace always followed by dot.com for[[ [00100000  .( /7cOde) # STREAM mode - recreate each individual objecthY?[P[ [00110000# in 'stream' mode each object's length is also suppliedcopyr[P[ [00120000# is used as FI is not available on all systemse this code[@[ [00130000.(  )# split length from stringo[p[ [00140000 -(     )    # split object off string, recoup space [`[ [00150000       # obJ now contains the representation of 1 obJ [P[ [00160000# determine type (1st char). Undefined is tricky@milinta.com [@[ [00170000# we rely on packages or fns to emulate them[p[ [00180000 /        .   # recoup spacespP[ [ [00190000   -         # next is the object itself. For a package multiple defns follow.[0[ [00200000.( /?P)/3-# [@[ [00210000# object follows as rank (len), Shape, obJta [`[ [00220000  -(     )    # shape, rankd the code[`[ [00230000.( / )        -     .[[ [00240000.(  /ME)/'.(  N)# Numbers. We need to account for capitalization for all but DYW[`[ [00250000.(/ (). ej ) [ /  ]EJ[ / ] inc [@[ [00260000   - ( )/,0.6it is [P[ [00270000   .(  RFO)6# This is a fn or opom for de[@[ [00280000 (  . ) # drop path if any[P[ [00290000.( A ) ".(7fix)   [P[ \00300000# define fn - DO NOT OVERWRITE any existing fn if package\P[ \00310000# We must define the fn w/o constraints. We do this shadowed.\p\ \00320000 fx.(/ ) !  .(/  ) ! def ot modified. Co \ \ \00330000   (0=10dFn  obJ)0dFn Pack dFn   dFndFn;        -A( )  .( ) &copyr\ \ \00340000 Can't fix   ; reason        (  ) # new full nameuse this code \@\ $\00350000  .  # result to return?d. Co$\` \ *\00360000  .6# this fn will be kept in a variable to be fixed later copy*\`$\ 0\00370000# 'name' contains the fn packaged which is returned now (code=3)te FX Xs l0\`*\ 6\00380000    .   -  obJ .  #6\P0\ ;\00390000      # mixed or enclosed?;\P6\ @\00400000.( ),      -     @\0;\ C\00410000   C\0@\ F\00420000. +  F\0C\ I\00430000      .(I\0F\ L\00440000.6   #L\0I\ O\00450000    O\PL\ T\00460000.( )6      -     T\0O\ W\00470000   W\0T\ Z\00480000   Z\0W\ ]\00490000   ..#]\ Z\ _\00500000# undefined_\P]\ d\00510000   . 5# return a package of undefinedd\p_\ k\00520000 -A( ) ( rdFn; ) 'r Pack 0 0' .k\0d\ n\00530000   .  #n\Pk\ s\00540000.(7:;)[ ]# value in obJs\`n\ y\00550000   (   .)   # in case types differy\@s\ }\00560000-  obJ# covers boths fns & vars}\ y\ \00570000.  \0}\ \00580000    .\ \ 00590000  }\0^?\  ;; ; ; ; ; ; ; ; \@\ \00010000# DanB 1990 (c) fix vars+fns names\`\ \00020000# It relies on table 'equivalence' which contains replacements\0\ \00030000# for various APLs\ \ \00040000 \0\ \00050000  # remove {} brackets\0\ \00060000.( /  ) \0\ \00070000   \`\ \00080000 :.(  [( / ) ]) # any decorators?\p\ \00090000 (     ) # does not tolerate extra chars\@\ \00100000 :  / # merge ;locals lines\`\ \00110000     .( / ) # more than 1 line?\`\ \00120000  /\ /  .(  ) .(;/ [ ]) # 1st char ';'?\P\ \00130000# OK, line[1] starts with a ';', merge it with [0]\P\ \00140000 \ -\(\ )( . -\ )  \@\ \00150000 [ /  ](  ) / \0\ \00160000 :.(7CodT) \@\ \00170000 **NOTR**# 'no translate' signature\P\ \00180000.(  C ) # should we translate this fn?\@\ \00190000# remove the occurence of the request\P\ \00200000    (  )(  ) . \ \ \00210000#\`\ \00220000# translation requested. The translation string is in 'CodT'\P\ \00230000# Empty lines: it is assumed all versions can handle them\P\ \00240000# (Sharp starts at r19) otherwise we have to introduce them.\ \ \00250000 :  \ \ \00260000 :. \0\ \00270000  /   \`\ \00280000   .. / (  )   /    \0\ 00290000   \(0 )/ ] ^?]  ;;7 5^] ] ]00010000ERROR(-IO-DMTCNL)DM.(/,  ( }DPchk) ) > ~[(, ) 0;]# Copyright (c) 1987, I.P. Sharp Associates]0] 00020000 :  []pchk ] ^?]  ; ; ;;00] ] 00010000ERROR(-IO-DMTCNL)DM.(/ , ( }DPack) ) > ~[  0;]# Copyright (c) 1987, I.P. Sharp AssociatesH V0005000.]0^?!]  ;;; ; ; ; !]@] %]00010000ERROR(-IO-DMTCNL)DM%]P!] *]00020000# WARNING: The X variables must not be in the packages!!!*]P%] /]00030000# For now I don't do any testing of this./]`*] 5]00040000# NOTE: Cannot be used in run-time systems that don't have DEF.5]@/] 9]00050000>((/ )/ )/ DOMAIN ERROR9]05] <]00060000    <]9] D]00070000 0(; )(; )=[1]Pdef 11Pdef 221Pack(,' ',3),,' ',4D]@<] H]00080000>(/ )/PINS DEF ERROR H]@D] 00090000# Copyright (c) 1987, I.P. Sharp AssociatesL]^?t2001 - Version 3 This workspace is used to transfer workspaces to/from host files. This be can useful when taking backups or going back to a previous incompatible version of an APL. Because it can apply some code translation it can also be used to go between APLs. It can be used stand alone for most PC APLs but for some mainframe APLs this method assumes you have access to some transfer program like PC108 for the PC. For example, TSO users need TSIO access (for SAM) and corresponding transfer programs. The programs known so far reside in variables with names resembling their environment. For SAM look at the objects and reassign 'filefns' to suit best your environment if necessary. SIMPLEST USAGE - To send to the host: )xload YOURWS )pcopy [lib] XFRPC (this workspace) namelist xfrto 'tohost\filename' 'namelist' can be (nl 2 3) or all, a utility fn to return all non transfer objects. - To retrieve the objects in a file on the host: )load [libno] XFRPC (this workspace) xfrfrom 'hostpath\filename' ADVANCED USAGE There are several switches. For example, if you want to transfer a file (ex: 'MFfile') instead of the current workspace, use switch 'file': xfrto 'tohost\filename /file=MFfile' local file name format varies but use \ instead of / for Unix pathnames to avoid conflicts with switches' delimiter. To transfer specific components use xfrto 'localfile /file=myfile /range=3,45' cpts 3 to 45 The access matrix is always transfered unless access is restricted. If a lock is required add the switch /lock. To retrieve a file do xfrfrom 'hostpath\filename /file=myfile' possibly adding switches /range and /noam if needed. The file will be created if it does not already exist. New items will be appended. Note that you must use the /f switch if it's a file even though the extention is .x?f otherwise all the components will be defined in the workspace in variables named something like CPTxxx. To replace objects or components use the /replace switch. If you only wish to see the names that will be produced use the /list switch. AV MAPPING and CODE TRANSLATION The program will perform av mapping automatically. To get the program to also translate the code use switch /trans. With /trans=2 you also get the av map in variable AV. This is useful if there is a lot of AV[...] in the code. They will be changed to AV[...]. Some of the programs can be used by themselves. For example, if you wish to keep the result of the transfer you can assign it to a variable as in toxfrxfr namelist and use your favorite program to transfer that variable. Note that translation problems are more likely to occur with this method. TECHNICAL DETAILS The transfer file extention is 'x?w' (ws) or 'x?f' (files) where '?' is 'u' for SAX, 's' for APL2000, 'd' for Dyalog, 'm' for SAM, and 'p' for AplX. This extention will be ADDED by the program and USED by the program. This extention usage can be overridden by the /apl= switch as in xfrfrom 'myxfr.file /apl=DYW' Possible /apl= values are SAM (SHARP APL mainframe), SAX (SHARP APL Unix), DYW (Dyalog for Windows), APX (AplX) and A2K (APL2000). dumps all objects to file without translation. Those include all variable types (character, numeric, mixed, enclosed/boxed, packages and, within those, undefined) and functions/operators. Packages are transformed into namespaces under Dyalog, overlay under APLX and into nested structures for APL+Win. Special fns are included to handle these in the transfer workspace. They all start with the capital letter 'P'. The code will also use those names instead of pnames where appropriate. reads a file, maps the av if from a different APL and applies code translation if /trans=1 (or 2) is supplied with the argument. All functions start with a delta. For Dyalog APL they all reside in the 'xfr' namespace. Code is written in "common" APL. The internal names (locals) are unusual to minimize name conflicts. There is a different workspace for each APL version. Switches can be shortened to a short non-ambiguous form. The actual switches are (*=xfrfrom only, CAPITALS=minimum length): /Apl*, /File=, /List*, /Noam, /Objs=*, /RAnge=, /REplace*, /Trans=* /Lock= EXAMPLES xfrto 'myexportfile /file=myaplfile /range=100 999 ' xfrfrom 'yourfile /objs=fns /trans' apply translation xfrfrom 'x.xuw /list' only list objects xfrfrom 'fx.xuw /f/n' file, no access matrix Function will look like this when translated SAX Dyalog APL 2000 F; trap;ec F; TRAP;ec_ F; ELX;ec_ [1] 2 ws 2 [1] w_(SI) [1] w_SI [2] a replace t [2] a FREPLACE t [2] a FREPLACE t CODE TRANSLATION To change the behaviour of the translation edit variable 'equivalence' under the APL section desired. Each section starts with a colon followed by the APL vendor code (SAX, DYW or A2K) as in ':SAX'. Each non empty line after is made out of 2 strings separated by '%'. The first one is the string to replace, the second its replacement. Strings surrounded by " are the av value instead. names are case independent and treated syntactically but others are not. RESTRICTIONS The usual ws full problems can be encountered. If possible increase ws size to solve this problem. Many characters have no equivalent in other APLs. They are still mapped to a character when read from the file. If a function cannot be fixed in the workspace (possibly because of an invalid header) a variable with same name preceded by a '' contains the offending code. For example, if function cannot be fixed then variable 'F' will contain the (translated) code. HISTORY This workspace started life as an APL/PC workspace in the early 80's. It has gone through extensive changes over the years. The original workspaces did not have switches but they are still available with the format unmodified. In 2003 I included APLX and adopted CR as the standard for fn representation. DanB 2001 (c) ^P_?^ 4 5 4;; ; ; 6; 7; ; ; 8; ; #; 9; ; :; ; ;; 5; G; <; =; >^P^ ^00010000# 'S' is delimited list of search/replace items^ ^ ^00020000^@^ ^00030000# prepare start/length of strings^`^ ^00040000 > >[?](  ) >  /   5/ 5^0^ ^00050000# Non-Overlapping search^P^ ^00060000# T is text to search, S is search/replace items^@^ ^00070000# p is 2 col of Position,pair #^`^ ^00080000 #   > 8( < 4 4) ^P^ _00090000# This is a special case for xfr: if the searched string has_P^ _00100000# If in it we seach the uppercased version (for sys names)_`_ _00110000 G 4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ _`_ _00120000 =A(( =)rup t)[ ?] =r(C[1;],t)[(C[0;],t)t]_` _ _00130000# When searching names we look for an exact match (sisize)_0_ _00140000 = ; 4 5 = G[;]__ #_00150000 : 6 >[ ;].(  : 5[ >[ ;] 6])  9(( ; :)C =). < 6 5. ?#_ _ %_00160000 : 9 :C 4%_0#_ (_00170000 ?: 9 /   9. 8(_0%_ +_00180000 0/ 8[ 9. 6]+_P(_ 0_00190000 9 / 9# some cannot be used for replacement0_P+_ 5_00200000 :.(/ \ 9 6 9)/ @ 9 9. 5_P0_ :_00210000 @: # #[] 9[?]  8[ 9. 6]:_P5_ ?_00220000 A:.( .    9)/  # #[, #;]?_ :_ A_00230000#A_@?_ E_00240000# W: which pairs to use; l1/l0: their lengthsE_PA_ J_00250000  >[  #[;];]  >[ ;]J_@E_ N_00260000# lbr: len BEFORE string to replaceN_`J_ T_00270000 7(  4)    #[;] ( 7) T_PN_ Y_00280000# size of not/replace portions: remove from 't'Y_@T_ ]_00290000 4(( 7[?] )/ )/ 4]_0Y_ `_00300000# insert room for new string`_@]_ d_00310000 4(( 7[?] )/ )\ 4d_@`_ h_00320000# put in place (doing b/b might wsfull)h_`d_ n_00330000  /   / >[ #[;];] \ n_@h_ 00340000 4[  /\ 7] 5[  ]r_  _?t_ ; ; ; t_`r_ z_00010000    -/  .(   )z_pt_ _00020000  F A( ) ( F)(  )(   )Nii+1_ z_ _00030000 _P_ 00040000# danb 83/9/27 will EXP for i:=N[1](or IO) to N[2]_0>_?_  ; ; ;; ; ; ; ; Lue _P_ _00010000# DanB 1990 (c) form object with vaLue (default by itself)2] _P_ _00020000# If the object name is a package then the defn of its unique_`_ _00030000# item is returned and 'vaLue' holds the path (of namespaces),by a dot. [5] _@_ _00040000# each name separated by a dot.Ls [7] W93_ _ _00050000  ?_@_ _00060000  # 16 fits all APLsW92 a package_ _ _00070000  _P_ _00080000# 1st we find if we're dealing with a "package" vaLue)/2/W91,_0_ _00090000.( ) # a package? Pval_P_ _00100000       # package right argame is to be r_@_ _00110000.( / )//  (nc 'vaL_ _ _00120000. ied chk n_ _ _00130000#(W94=W97n_0_ _00140000 :    . (W94~''1_ _ _00150000 : System _0_ _00160000.( A ) ] vaLue(W94_ _ _00170000#ks OK, try i_`_ _00180000# a name is to be represented. It's value may be supplied as left arg. W84: _`_ _00190000 : .(7vaLue) # if not supplied chk name is valid1] accou_0_ _00200000.( / 7  )/ :W963_ _ _00210000 ue)W_P_ _00220000.(( 0  )   )/ # chk vars('M'W9_@_ _00230000# System vars need no namespace header we use_@_ _00240000 -( / ) # name looks OK, try it40] _@_ _00250000 :.( (  ))   name is prese_0_ _00260000.(-A  ) (-_ _ _00270000 E W97_0_ _00280000 :# Enclosed typeW99' Pdef_0_ _00290000  (  ) xf_0_ _00300000.(  )  _@_ _00310000# account for mixed types and prototype97),W9_P_ _00320000 : "\   .(  ) _@_ `00330000  /   (W99,(W95,'.',o`0_ `00340000 :  /NCM,W97`0` `00350000.(M ) W97W96,(,ob `0` `00360000.   167 n `  ` `00370000#1] name `P ` `00380000# Funtions; we use cr since it's the only standard length of`0` `00390000 :.(- ) r `0` `00400000    . se arg`P` `00410000# if the real name is present we use the fn in the packageSE `@` "`00420000 : (  . ) special versio"`0` %`00430000   rTvAl;x;  %`P"` *`00440000    Pdef vaLuerT cr' ' Quotes must*`@%` .`00450000  -A( ) (  )  tches.`0*` 1`00460000 : F.(  ) 1`0.` 4`00470000 :  hes not mention4`@1` 8`00480000 : (( )  )  ' MUST 8` 4` :`00490000. s. [8] :`08` =`00500000 :# Packaged types the same =`0:` @`00510000 : P  fore or wi@`0=` C`00520000 :.( ) [10] C`@@` G`00530000  ( . ) [;]  3 /e[=]d e G`0C` J`00540000.   ' ' aJ`PG` 00550000 : ( )   (  )   anged [1 O` t_?Q`  ;;Q` O` 00010000ERROR(-IO-DMTCNL)DM.(/ , ( }DPnames) ) > ~[  0;]# Copyright (c) 1987, I.P. Sharp AssociatesNOPQR \` z_?^`  ;;^` \` 00010000ERROR(-IO-DMTCNL)DM.(/ , ( }DPnc) ) > ~[  0;]# Copyright (c) 1987, I.P. Sharp Associates i` _?k`   ;;k` i` 00010000ERROR(-IO-DMTCNL)DM.(/ , ( }DPval) ) > ~[  0;]# Copyright (c) 1987, I.P. Sharp Associates8v`0_?y`   ;;; ; ; y`@v` }`00010000ERROR(-IO-DMTCNL)DM}`Py` `00020000# WARNING: The X variables must not be in the package!!!`P}` `00030000# For now I don't do any testing of this.``` `00040000# NOTE: Cannot be used in run-time systems that don't have DEF.` ` `00050000>(/71)/ SYNTAX ERROR>(R )/ DOMAIN ERROR>(-  )/ RANK ERROR>(/ )/ DOMAIN ERROR`P` `00060000        .(  ) `@` `00070000>( )/ DOMAIN ERROR``` `00080000 0(; )[1]Pdef 222Pack 1`@` `00090000>(/ )/PSEL DEF ERROR `@` 00100000# Copyright (c) 1987, I.P. Sharp Associates` _?`   ; ;SQRSQP`@` `00010000# name of object defined by string43 t-`0` `00020000    [w`@` `00030000 -  # length of name& `0` `00040000    [ZZ3ˬ`0` 00050000  : P & `P_?`   !; ; "; ; ; #; $; %; ; &; '; (; ; ); *;; +; ,``` `00010000# Dan Baronet 1993 - PARSE switches and reset argument. Version L2.3`P` `00020000# special version for XFR: the switches' header is ''``` `00030000# Spaces are used to delimit arguments. '/' delimits switches.`P` `00040000# Quotes must be used to include spaces or '/' in arguments.``` `00050000# Switches can exist with or without [possibly defaulted] value`P` `00060000# or be elided. Switches not mentioned are refused.``` `00070000# Shorter names are accepted but '=' MUST be used to supply values.``` `00080000# Variables holding switch values have the same name as the switch``` `00090000# with a before or with the contents of immediatly global var ` ` `00100000# Example:``` a00110000# cmdarg '/sa /ab= /sc[=] /cd=1 2 3 /e[=]d e f /=*' parse cmdargaP` a00120000  / !  !# ' ' added for LOGOS useaPa a00130000 *# this default prefix can be changed aPa a00140000 \ !/' \ ' - !/ # QUOTED  all SWITCHESa@ a a00150000>( )/unbalanced quotesapa a00160000 &( #)  # #/  #( / ') (0 )/ ! ( / ! % =a`a !a00170000 A(( )rd s)[?] r(~\s' [=')/s )(!a a #a00180000##a`!a )a00190000# Check for special switch /= which specifies the arguments' delimiter)ap#a 0a00200000.(/     %C )  ) /  [ #/  # \ ] 0a`)a 6a00210000# Check switches: set all allowable switches to 0 (assume not present)6a@0a :a00220000 : $(/\    ) :ap6a Aa00230000 :.(  $)/   $  (  ) $- *( )0.  $  $Aa :a Ca00240000#CaPAa Ha00250000# Process each switch separatly according to their positionHaPCa Ma00260000 :.(  ()/   &   ( (  (MapHa Ta00270000 $>unknown or ambiguous switch: <   %/  C Ta Ma Va00280000> %/ $Va`Ta \a00290000 $(\ )/  % $( $ ) $ & &\a`Va ba00300000# 'pat' is 1 switch group complete with assignment & value if presentbaP\a ga00310000 " ( %) $. " . $[ $ ]=ga`ba ma00320000 .:   .(/ #[=]C $) /.(= ) 0 1ma`ga sa00330000 /:.(/ # $ =)/ 2 ,>no value allowed for switch < %sa0ma va00340000>(= )/ ,. 0vaPsa {a00350000 2: ,>value required for switch < %{a0va ~a00360000>(0= )/ ,~aP{a a00370000 1: (   =)  [ ] .(/ , / )/ 2aP~a a00380000 ((\ ,)!\ ,)/ .( ./ $( # ) $)/ 0aPa a00390000# valid elements are supplied with the pattern: verify themaPa a00400000 #( "/  $)! "-/(   )C  $ aPa a00410000 ,>invalid value for switch <(  ) a a a00420000> #/ ,aPa a00430000# Drop trailing spaces, remove surrounding quotesa@a a00440000 0:.(/  / ) 3 (  ) a`a a00450000 3: / '/ - * %( /1(\s)/)t. a a a00460000#a`a a00470000# Find each token in the argument and use the delimiter to separateaPa a00480000# them. The following allows to deal with '' properly:apa a00490000 :     *\ %  '  % %  %. %# t=1ST quoteaPa a00500000 #  . *# DELIMITERS: spaces NOT in quotes OR 1st quotea`a a00510000# COMPRESSOR: any double quote OR last quote NOT in \ or double delim.a`a 00520000 [ #/  #] ) (( *-  %. %)! # #)/ a `?a J B L; M; CaPa a00010000# DanB 1990 (c) return a string representing objects nameda`a a00020000.( L( M" M / L)/ L  L)  Ja@a a00030000 J J ( M  L  ) La0a 00040000.( L M L) @f``?Ff D E D; F; G; C; H; I; J; ; K; L; M; N; O; P; Q; R; S; T; U; V; ; sFf@@f Jf00010000# DanB 2001 define objects in host fileJf`Ff Pf00020000# ArG is a string with the source filename and possible switches:fr\testfn.xpPf Jf Rf00030000#?Rf`Pf Xf00040000# /trans=(012) is level of code translation to occur (def 0)r(~\XfPRf ]f00050000# /apl=(SAMSAXDYWA2K) source APL; av[positions]rd ]f@Xf af00060000# /file[=] target APL filerd afP]f ff00070000# /range=start[,end] component range affectedh0001000ff`af lf00080000# /replace if objects are to be replaced (def NO) lfPff qf00090000# /noam NO access matrix resetXYZ[\]^_`abcdeqf@lf uf00100000# /objs=[vars][fns][...] def ALL (fns=ops)uf`qf {f00110000# /list only list items that would be brought in{fPuf f00120000# /q quiet mode - mo messages displayedf@{f f00130000# See [:d]oc for the format of the filef f f00140000#f`f f00150000 FE/= /q/apl=/file[=]/replace/range=/noam/objs=/trans[=]0 1 2/list/debugf0f f00160000 C D F Df@f f00170000((0 S) H) H* XFR version 3.06f f f00180000 NfPf f00190000# all the vars should be defined now - validate them:f0f f00200000 V- V# default is OFFfPf f00210000 I  .( GA P) %f@f f00220000# are we supplying a tie number?f@f f00230000.(/ P  0123456789) I- Pf f f00240000.f f f00250000#sfPf f00260000.( PA)# should we use the same filename?EfPf f00270000 P(\ I.)/ I( I I0 D :/\) Df0f f00280000# Filename suppliedf f f00290000#?Ef f f00300000 I P 2f@f f00310000 T T.(/ T  0123456789,) "f@f f00320000 D*** illegal component rangeEf f f00330000. f f f00340000#f0f f00350000  I-./0123f@f f00360000 T((- T) / ) f f f00370000#s f@f f00380000# Is there a file extention? then warn userfPf f00390000 ( ) #** Warning: no /file switch presentf@f f00400000( S- G( D) fF) fPf f00410000# The various types are represented by these lettersf@f f00420000  pPmMeEnNcCfFoOsf@f f00430000 R(/  R) # use lower/uppercasesobjf@f f00440000# Set av mapping; 'a' is for {ASCII}Af0f f00450000.(A L) 3?f@f f00460000# The source APL has been suppliedsf`f f00470000  'SAM SAX DYW A2K APX sam sax dyw a2k apx0 sf@f g00480000.(  ./ L) 5g@f g00490000 D*** unknown APL.`??apl=/fgPg g00500000# The source APL hasn't been told, use the extention to guess gPg g00510000 H(? H) H amudspAMUDSPs?gP g g00520000.(/  H (\./ )/  D)1gPg g00530000.( H   )Q# ASCII translation?]?apl= g@g g00540000# No av mapping or translation for same APLg0g "g00550000.(/ H) S"g@g &g00560000 F([ J( ) ]sapl0&g0"g )g00570000-( V/)/ CAVbUf)g &g +g00580000 J F+g@)g /g00590000. VS# set translation APL referencest/d/g +g 1g00600000#s:1g`/g 7g00610000# Translation requested. Let's see from which APL this came froms7g@1g ;g00620000# and if it's something we can translate:;g`7g Ag00630000 :{}SAPLDYWA2KAPX[( / ) /] AgP;g Fg00640000 H\ C .(/ H)S# is this a known APL?FgPAg Kg00650000 F( ) H/ # IMPORTANT: 'bUf' starts with a CRKgPFg Pg00660000 H N# The CR is a delimiter - no spaces alloweds PPgPKg Ug00670000 F(0\( H:)C F)/ F# all the replacementstrans[=]0 1 UgPPg Zg00680000# Cleanup: remove double CRs and replace CRs by %sZg@Ug ^g00690000 H H/ ( "  H/ F)/ F2^g0Zg ag00700000 [ H/  H]%?agP^g fg00710000# If /trans=2 we will change av[refs] by AV[refs]replacfg@ag jg00720000  ( V/)/ %av[%AV[ jg`fg pg00730000# Some characters could not be represented in other APLs. All we knowpg@jg tg00740000# is their av position. We find them here.actgPpg yg00750000 F("/ )/\%/ # which side are they (in/out?)ygPtg ~g00760000.( H"/ )S H   H/  H~g`yg g00770000 -( H)( H) # the original character*g@~g g00780000 (  F)( Jg@g g00790000 (( H) ) ( H) g0g g00800000.L F F0gPg g00810000# Except for SAM all should be able to handle thissgPg g00820000 J([ [;]]# this global used by srangeg@g g00830000 H D# grab proper fns, open file Tg@g g00840000 L D# gather messages hereans[=]0 1g g g00850000#s#g@g g00860000# * objects are defined in this sectiong`g g00870000# if /list has been supplied only those that would be (re)definedg@g g00880000# will have their name displayed.g`g g00890000# if /replace has NOT been supplied then a message will appearg0g g00900000# for all those that existg g g00910000#snoamg0g g00920000.( S F H)tg`g g00930000 H[] H[] S  S# keep track of what's to be readg0g g00940000# screen objects hereg0g g00950000.( R)asg0g g00960000.(( F) R)\g@g g00970000 S/   F# is this a ?g g g00980000. GkgPg g00990000 (\ .)/ # remove any namespace refsg@g g01000000 S S U/7 # unknown?g@g g01010000. Qh# listing takes place hereobjsgPg g01020000.(/ S)\# list if unknown or to be replaced?trans[g0g g01030000 D D  N.\g0g g01040000.(/ S) ks gPg g01050000 D D* " " not redefined N.\if ulg`g g01060000# this object is either new, allowed replaced or to be put on files lib'g0g g01070000 F(0 G) Fs0listgPg g01080000# create will return a name or a value to fileg0g h01090000 L L G. Sh0g h01100000. G \  h0h h01110000# 'NaM' reset by nsh@h h01120000  F W I U T K Q zs V h0h h01130000 L L  []`? list/dhP h h01140000 D D(  )(- ) N.\sw wh h h01150000#s h h h01160000 H h h h01170000 Ih@h h01180000 D D( L) objects definedh@h "h01190000.(( L/) O0 G) ]?list "h h $h01200000 H $h0"h 01210000)erase xfrfroma@Ha?a r s W !; t; u; v;;; ; w; x; j; ys tie#, replacaPa a00010000# DanB 19971214 put in file TIEd. Append cpts if necessary. maa a00020000# arg is tie#, replace, range(2), original file size(2), NO access matrix, list only, cpt no (0=AM)  rngargaPa a00030000# done and message string returned if nothing was definedeitha0a a00040000 r  j t ![]a0a a00050000 w tlc' [9] cpta`a b00060000  ![] v ![] x ![] y ![] u ![]onents arb`a b00070000# global 'NaM' refers to either a ComPonenT or the Access Tablee to replace [ b@b b00080000%(1E5+/2FSIZE tie)FRESIZE tielced b@ b b00090000. u z# is this the access matrix? wanted [b0 b b00100000# must be a componentCOULD beb`b b00110000# because the file components are supposed to be sequential we can do:pt  ebPb b00120000.( u.- v) # exit if not in range to replaceg)l20 [22]bPb $b00130000# this cpt will be put in the file if new or replaced wantedc$bPb )b00140000.( u- w) {# cannot replace even if /replace wanted )b0$b ,b00150000.(  u w) {be re,b@)b 0b00160000# this cpt COULD be added/replacedmsg(~ams)/0b ,b 2b00170000. y |[29] 2b@0b 6b00180000 j.( u- v w) msg'* Acce6b02b 9b00190000 s t u. [33] msg'* A9b@6b =b00200000# cpts are missing, pad enough to get there30=b09b @b00210000 :.( u. v) ok1 [37] @b0=b Cb00220000 v t. Cb0@b Fb00230000# domain error means troubleFb0Cb Ib00240000 : v u/ s t. Ib Fb Kb00250000 {:. y KbPIb Pb00260000 r * Component ( u) not replaced. Pb`Kb Vb00270000# this cpt COULD be replaced but all that is wanted is the cpt #sVb@Pb Zb00280000 |: r(0 x)/ Access Matrix. u Zb Vb \b00290000 r u. \b0Zb _b00300000# we replace it if ~ams ok_b \b ab00310000 z:. y |24ab@_b eb00320000 r* Access Matrix not replaced. x ebPab jb00330000 r2* Access Matrix not replaced (problem encountered)ingjb eb lb00340000l30agelb jb nb00350000 s t1,p nb0lb qb00360000 : r j1 160 qb@nb 00370000 : r( j)(0  r)/ r [2] IOub0Za?xb X Y Z [; C; P; \; ]; S; T; ^; _; `2xbPub }b00010000# DanB 19971124 (c) transfer file or items to hostfile extent}b@xb b00020000# [namelist] xfrto 'tohostfile /switches'ileb }b b00030000# Switches:Wsb@b b00040000# /file[=] use APL file givened bybPb b00050000# /range=n1[,n2] transfer components n1 to n2objs)NaM b@b b00060000# /lock= file lock to use {ASCIIb@b b00070000# /q do not display banner [b b b00080000#SAX DYW A2K b0b b00090000# parse argument(1NaM0,NbPb b00100000 [/lock= /q /= /file[=] /range= [ce APL hasn't b@b b00110000((0 S) X) X* XFR version 3.06b@b b00120000# do we transfer the whole workspace?4ArG)bPb b00130000-((A P)/7ob)/ oball mapping or trab@b b00140000.(A P)# no filename for the file?bPb b00150000 P(\ ^.)/ ^( ^ ^0 [ :/\) [ transb0b b00160000# add extention to filename1]b0b b00170000 _.xsw# file extention bPb b00180000# this ws should be )pcopy-ed to guard against name conflictsb0b b00190000.(A P) ++NaM/2 4 4bPb b00200000 `- `# 0 by default - no check if numericown APL? [65] b@b b00210000.(/ P  0123456789)rts with a CR b@b b00220000 ^- P.# a tie number is acceptableb b b00230000#Uf)/bUf alb0b b00240000 \  P remove doublbPb b00250000.( ^(/ \C $ )%) # already tied?0] b@b b00260000 P ` ^/%2ange av[refs]b0b b00270000 [ [( _)f=2)/'%b b b00280000 X ^ `eb@b b00290000 \ X.(A T)  ibPb b00300000 ]- T \(( \) ])( \)  ] wb@b b00310000 ]cpt X( X) [83  rEfbPb b003200002((FREAD t,i,lock) forme nL,i) write r \racbPb b00330000 S(  / \) cpts transferedCodT),NaM,(1bPb b00340000# Access Matrix: trap access problems if possiblee able to hab`b c00350000# create a temp fn to localize trap/elx to create the access tableG grab cPb c00360000 \rnL;m nL# reuse name nL [86] c0c c00370000 \P \;elx] cP c c00380000 \P \P!r0elx'0'mfrdac t,lockc` c c00390000 \ \[]P+(m forme'AccessTable')write rr1+1me will appeac0c c00400000.( \-A \)71] [92cPc c00410000 S S with ( \)EMPTY Access Matrixc c !c00420000.7creen o!c0c $c00430000 ^# no tie no to close$c0!c 'c00440000# try to estimate space taken'c`$c -c00450000 S/ / ]( \" \ ]  )/ ]  Y100] q-c@'c 1c00460000 S S objects transfered104 listing1cP-c 6c00470000 X3( ]) ]# size won't work with namesaced [103] Ar6c01c 9c00480000 X X [ _q)107 [105] Ar9cP6c >c00490000 _A2K( !d ); WS=her new, >c 9c @c00500000 _ _ on@c >c Bc00510000( _ ) XBc0@c Ec00520000.( \ ]  ) 7alueEc0Bc Hc00530000 \  \( \ ]) XnWHc0Ec Kc00540000 ]( \) ].4,5v / u..x.>,6v5P t.R.xT.z@R&Z.~.|.>,7vp.|..6.L..V=w.X.t =t33t=t˸.V23S.VRQYZ[D./Ŏ3Q2ȋ<V^VŎؾ^+ Y3..2.P.Z t.P .v.f.\.t..Z.`t.>u .>rv.f." u s.rw.V.3Ѓ...VɎ.>fu4.-..,.... Ȏؾ3.j..Z.`.\.t.rt.=v.f@P.hȃy3ɸ.^MY..Z.`.\.t.V.j.r;tMQPS.^_[X;s+S.;uPXu[Y[Xbf.h.n.+j..+j&+..@@.p3.uw...>u.SWP.^X_[.j&>.>t& && &.Vt .n33.-..,..f. .j Ȏؾ.j te.".h.r.Dts.;"~."..>L ێ؎Çt|t |wË.+L3һ .t&=t~ك.h.&.>v&1D t{\fs.Z.`.\.t\.>u t .r9t<~ك.h..t.6v&&x..f3.t.6v..f=Mv[؃&?tLs:S.r.+j.V&.j.r.Z&.`.\&.t[&u tÉ3.t.n .P.Lx.;frV.^.t.6v.n3.p.f=Mv+V.|^t+&.j؉QȭV.`^YCC t..2.P.4.N .S .>,6r1.>u).n.6p. .jÎ&t.P.R..X?t5t.>f3[t˽t|tu.> 3tdt ..>2.R.Z 3.n.6p. FFu;r.>p&%3.n.6p. xHV.+6pxNt^ÀljT^t".jؠ$u 1 tFF3.>,7rP.>xtH.) .n.6p. .x#.+p_P .)) Xt AnyFF3.jQ>u>tp.) Y.jQ>u>t @.) Y.N.+) .n.6p. .x-.+p_&t.j؉&L FF3.n3.tÀ T3. .n3.|.pt0.j&؉>ߠPSu K_q [X 3.>,7rL.>xtD.) . .n3.|Pa .)) X.pt oyÃ3)t .X.?uˎt.>ftDt.n3t.j;r.p& uˌȎ٠u.>ut1t_.Z ..V&$ 3QS.n.l;s٠  u3 [Y.j .nP.t8.>,6v QS [Y%ؠ ut ؠ Xtˌ؎.X.?u>&1.n.6p.juÎؠt3ˎ.ft.>ft.f,".fW] =r__3˸.V..X.`.Zu/;s+.>p&u.jؠt3[Y_WQS3.`.>b.;>ds[&<t,.d+ϰ tFOAuA.>b؋+ً& .b uOAuA3VQS.t.6v.<WVQ=Mv .: u :u 4.`tY^_FFиY^_3[Y^ VQ~MuI t,u3Y^,6r<_t:.`>váu<tÀvÊ2.b*.d<ut4> u-.fWQS؎.>b.d+3۰ tCt[Y_=v.f3. UR,Z]ur.n3|tÊ< W_LS.r3.rë3QX%t+Ȱ.+jG[ì<ÎQ2YRP&t$x":uWV<wG&E^_t :XZWQV.R.2<~  ..>L^uV.+L3һ. ;s6V.6p^x'&Et=w=ؠu  u(&&&$&ë^_}..;Ru.R׃3Y_WRQP..>L.R.P+2.>T.R.P+2XYZ_RP.N@.L.TXZVQ2 F2F..6T.6Y^VQSP.j.n3<~X[Y^uVSt[^VRQЬ2PFFZYZ^WVRQ.ر.._V.s&.7CC- .L.SV[GGYZ^_S>t>us>rl.; ub.(;uX;uY;wPt@;u4$,8r-P t .L؃+ɰXtDtE..604..عdDt u;\t`u tt 3[Y^P.j.l.n@@.pXWVQɎY^_.>,7r.>xtS.[.>,uQSPX[YUWVRZ^_]îi.>,7rf.>xt^QSP..p+t,7r.>xtQPSf [u\XYSR. t.t(.+L.x.zGtg Z[SQR.+L.x.zGtZY[.>,7s.>xtRQSPP$u tXQaZ.+L.x.zGt$QG$p t  GY.)NW+u]_X[YZRP.;|r+.6~ t@XZ+u &u0002000wd Db?d 4 5 3; 4;d`d d00010000#indscharmat ROWFIND chararr -- Origin-1 indices of char rows in a char matdPd d00020000#Enhanced to accept any-sized arrays (9/21/87)dPd d00030000ERROR(^\DMTCNL)/DM# Copyright 1987, UNIWAREdPed 00040000 4(DZ A B) ........t<u t7tt. t$... t....6.t<u t7tt뫭. t$... t....6.....;w#u;w..++sK.."...++sH...u . u.u . u$2......2..6.. u u..>....ṯ"ԀsBsB. . .>u,.>u$3 u tJPhX........6. ....3..3 yuˋ3 u t t... tC_..3 yuً;3 u t>ٰ u0ȋ3 yuً 3 u tٰ tf...3. .t.rë«\Ë..;ru ..;v ... u....;.rw.. .;.w..3.O..C.+sB.....; u..; u%QRsCÌ$ЁZYQRsCÌ$ЁZYQSހˌَہ[YQS[Y.s.PSW...3m3.t_[XU3........ y uK@RJ}Z t ? .l¹ Հ@.Z +ʋӻ|3PXR[3ۊހ. .܀. .....]PSQ3 tÀ tĀtȀ tȀtBY[XMce Jb?ee  5;63 6064 39ee`ce ke00010000#charmatSStoMAT segstr -- Delimited character vector to matrix8968 16865 1kePee pe00020000#Enhanced to accept any-sized argument (21 Sep 87)4 9782 551pePke ue00030000ERROR(^\DMTCNL)/DM# Copyright 1987, UNIWARE 1828ueP5pe e00040000.(/ 5, (DA R)PS؎ u$t[[[X3ҋؾȀtṷt u[XgaȬIu t‹ـ瀀 tB3. . ..3..I:tP.u. u..;r"u ..;r.... u. u. 빸. u).  u .u. u .. ..6[2.u. .. [ح3tЬQ€tBY3..I:u u u.u.3PS؎.. . ..[2.6.=t. .3. .[. .&؋. .& tPS. .& u. .& u uYZrQtBY u2QS[Y tSP؋JX[ tSPX[PSQR....++}JQtBY u tJ ZY[X) 914 e`ue 00050000 5 5 0>( DOMAINRANK[[ 5] [ 5]]) ERROR 156eGY?TargetAVeSY?CREEeY?FORMEeY?DEFINEeY?EOfeY?READeY?FIXeY?ABCeY?abceY?TIEeY?DESCRIBEeY?NAMESeZ?versioneZ?FiLeNaMee+Z?FiLee1Z?XFRe7Z?ALLegZ?SharpAPLeZ?TXTREPLe[?PNAMESe[?READe5\?PACKeG\?PINSe\?XFRFILEe\?NFILEe\?APLFILEe\?XFRFILEe]?GETPACKe ]?equivalencee]?fopen >eC]?closee[]?createea]?filees]?open3 1e]?readhape]?toread (e]?source X9e]?readBufe]?writee]?handlee]?penclosee]?all Ie]?XfrObjsie^?boute^?line0e^?line1e9^?l160e?^?l120eE^?l130e K^?copyrighteW^?cOdee]^?createe^?fixe^?Pchke^?Packrt@mie^?Pinse^?describee _?CodTe_?txtreple_?forie5_?vaLue98;We;_?formel;Weq_?Pnamest'se_?Pval,W94)e_?Pselse cme_?nameofe_?parms:pose_?patn tle_?parseNCe+`?swit25:poeI`?errorssieg`?comp[40] e`?maske`?xfre`?xfrfrom e`?inWsatrixe`?xlate /e`?noamns]fa?aplL (ff a?ascii fa?cR fa?debugstfa?fileoulf!a?listin f'a?objs f3a?range qf9a?replace f?a?transye fEa?infile fQa?obying fWa?xfrto [2 f]a?Argle'fia?nL)25 fua?XfrIDe [2f{a?lock fa?PisIDfa?namesfa?repl_1fb?list, orif#b?showend f)b?PSYSIDf/b?PACKERRSf5b?PACKBINfAb?ROWFINDfGb?SStoMATfb?testfb?eachfb?depthfb?enlistfb?find fb?without!fb?first"fb?enclose#fb?partition$fb?index%fb?index&fb?pick'fb?disclose(fb?Fwrite)fb?Fread*fc?Fhold+fc?Fdrop,f%c?conf-fIc?EDIT.fUc?SIGNAL/f[c?else0fmc?host1fsc?mount2fc?time3fc?endif4fc?PDEF5fc?SOURCE6f0\?%VALUE ERROR SOURCE ^9f@V? #DanB 2003. Transfer ws version 3.06=f ? >f  ? $ ASXFRPC306g2M SYSHELP