Article 1401 of vmsnet.sources:
Path: nntpd.lkg.dec.com!pa.dec.com!news2.digital.com!news1.digital.com!nntp-hub2.barrnet.net!news3.near.net!transfer.stratus.com!news.mathworks.com!mvb.saic.com!vmsnet-sources
From: ragosta@merlin.arc.nasa.gov
Newsgroups: vmsnet.sources
Subject: Sorted Directory Help, part 01/02
Date: Mon, 18 Sep 1995 21:01:29 GMT
Message-ID: <59845453@MVB.SAIC.COM>
Organization: Aeroflightdynamics Directorate
Lines: 1160
Followup-To: vmsnet.sources.d
Approved: Mark.Berryman@Mvb.Saic.Com

Submitted-by: ragosta@merlin.arc.nasa.gov
Posting-number: Volume 7, Issue 60
Archive-name: sdir/part01

1 SDIR

The Sorted DIRectory command produces a directory listing sorted by either
creation date or size.  The default is date.  If no filespec is specified,
the current directory is listed.

Note that none of the system DIRECTORY command qualifiers work.

    SDIR [qualifiers] [filespec]

/Descending 

Causes the output to be printed in descending order instead of ascending
order.  By default, the most recent files (or largest) are produced at
the end of the list.  /Descned will reverse the order.

/Size

Causes the listing to be sorted by file size instead of date.

$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
$!
$! This archive created:
$!  Name : SDIR
$!  By   : Mark.Berryman@MVB.SAIC.COM
$!  Date : 18-SEP-1995 13:56:46.28
$!  Using: VMS_SHARE 8.5-1, (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 archive:
$!+   Ensure that all parts are present, (2 at about 95 Blocks each).
$!+   Append all parts together to form one larger file.
$!    Minimum of VMS 4.4 (VAX) / OpenVMS 1.0 (Alpha) is required.
$!    Remove the headers of the first part, up to `cut here' line.
$!    Execute file as a command procedure.
$!
$! The following file(s) will be created after unpacking:
$!       1. SDIR.FOR;1
$!
$ set="set"
$ set symbol/scope=(nolocal,noglobal)
$ f="SYS$SCRATCH:."+f$getjpi("","PID")+";"
$ if f$trnlnm("SHARE_UNPACK") .nes. "" then $ -
 f=f$parse("SHARE_UNPACK_TEMP",f)
$ 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=file,P2=chksum,P3=attrib,P4=size,P5=fileno,P6=filetotal
$ 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(CURRENT_BUFFER);DELETE(m);EXITIF INDEX(
ERASE_LINE,"-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;
PROCEDURE ProcessLine LOCAL c,s,l,b,n,p;s := ERASE_LINE;c := SUBSTR(s,1,1);s :=
 s-c;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(b)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");o:=CREATE_BUFFER(f,f);Decode(o);WRITE_FILE(o,
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 'f'
$ fa=f$getdvi(f$parse(f),"ALLDEVNAM")
$ Pa=f$getdvi(f$parse(P1),"ALLDEVNAM")
$ if fa .eqs. Pa then $ rename &f 'f$parse(P1)'
$ if fa .nes. Pa then $ copy &f 'f$parse(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`20`20`20`20`20`20PROGRAM`20SDIR`20
XC*
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20SDIR`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*
XC*`20`20`20`20`20AUTHOR`20:
XC*`20`20`20`20`20`20`20`20`20`20Arthur`20E.`20Ragosta`20`20
XC*`20`20`20`20`20`20`20`20`20`20RAGOSTA@MERLIN.ARC.NASA.GOV
XC*`20`20`20`20`20`20`20`20`20`20
XC*`20`20`20`20`20`20`20`20`20`20MS`20219-1
XC*`20`20`20`20`20`20`20`20`20`20NASA`20Ames`20Research`20Center
XC*`20`20`20`20`20`20`20`20`20`20Moffett`20Field,`20Ca.`20`2094035-1000
XC*`20`20`20`20`20`20`20`20`20`20(415)`20604-5558
XC*
XC*`20`20`20`20`20DESCRIPTION`20:
XC*`20`20`20`20`20`20`20`20`20`20SORTED`20DIRECTORY
XC*`20`20`20`20`20`20`20`20`20`20PRODUCE`20A`20SIMPLE`20DIRECTORY`20LISTING`20S
VORTED`20BY`20DATE`20or`20SIZE
XC*
XC*`20`20`20`20`20`20`20`20`20`20/DESCENDING`20=`20OLDEST`20DATES`20FIRST,`20EL
VSE`20NEWEST`20FIRST
XC*`20`20`20`20`20`20`20`20`20`20/SIZE`20=`20sort`20by`20size`20instead`20of`20
Vdate
XC*
XC*`20`20`20`20`20SUBPROGRAM`20REFERENCES`20:
XC*
XC*`20`20`20`20`20ASSUMPTIONS`20AND`20RESTRICTIONS`20:
XC*`20`20`20`20`20`20`20`20`20`20NOT`20TRANSPORTABLE.
XC*`20`20`20`20`20`20`20`20`20`20DIRECTORY`20TRUNCATED`20AT`20'max_files'`20FIL
VE`20NAMES.
XC*
XC*`20`20`20`20`20LANGUAGE`20AND`20COMPILER`20:
XC*`20`20`20`20`20`20`20`20`20`20ANSI`20FORTRAN`2077
XC*
XC*`20`20`20`20`20CHANGE`20HISTORY`20:
XC*`20`20`20`20`20`20`20`20`20`2022`20MAR`201993`20-`20`20INITIAL`20VERSION
XC*`20`20`20`20`20`20`20`20`20`2014`20SEP`201995`20-`20`20Converted`20to`20alph
Va
XC*
XC***********************************************************************
XC*
X`20`20`20`20`20`20PARAMETER`20(MAX_FILES=1000)
X`20`20`20`20`20`20common`20/data/`20
X`20`20`20`20`20$`20date(max_files),`20`20direc(max_files),`20`20size(max_files
V),`20`20
X`20`20`20`20`20$`20names(max_files),`20num_files
X`20`20`20`20`20`20logical`20direc
X`20`20`20`20`20`20integer`20size
X`20`20`20`20`20`20integer`20*8`20date
X`20`20`20`20`20`20character`20*80`20names
Xc`20
X`20`20`20`20`20`20integer`20indx(max_files)
Xc
X`20`20`20`20`20`20CHARACTER`20*127`20P(2),`20PATH,`20next_file
X`20`20`20`20`20`20CHARACTER`20*20`20Q(2)
X`20`20`20`20`20`20character`20*23`20adate
X`20`20`20`20`20`20CHARACTER`20*4`20ON,`20OFF
X`20`20`20`20`20`20LOGICAL`20D_FLAG,`20S_FLAG
X`20`20`20`20`20`20external`20my_open
XC
X`20`20`20`20`20`20ON`20`20=`20CHAR(27)`20//`20'`5B1m'`20`20`20`20`20`20`20!`20
VBold`20on
X`20`20`20`20`20`20OFF`20=`20CHAR(27)`20//`20'`5B0m'`20`20`20`20`20`20`20!`20Bo
Vld`20off
X`20`20`20`20`20`20D_FLAG`20=`20.FALSE.
X`20`20`20`20`20`20S_FLAG`20=`20.FALSE.
X`20`20`20`20`20`20CALL`20GETFOR`20(NQ,`20Q,`20NP,`20P)
X`20`20`20`20`20`20DO`201`20I`20=`201,`20NQ`20
X`20`20`20`20`20`20`20`20`20IF`20(Q(I)(1:1)`20.EQ.`20'D')`20D_FLAG`20=`20.TRUE.
V
X`20`20`20`20`20`20`20`20`20IF`20(Q(I)(1:1)`20.EQ.`20'S')`20S_FLAG`20=`20.TRUE.
V
X1`20`20`20`20`20CONTINUE
XC
XC`20---`20Defaults`20to`20current`20directory
XC
X`20`20`20`20`20`20IF`20(NP`20.EQ.`200)`20THEN
X`20`20`20`20`20`20`20`20`20CALL`20DEFAULT`20(`20PATH`20)
X`20`20`20`20`20`20ELSE
X`20`20`20`20`20`20`20`20`20PATH`20=`20P(1)
X`20`20`20`20`20`20ENDIF
X`20`20`20`20`20`20CALL`20PARSE`20(`20PATH,`20'*.*;*',`20'FULL',`20PATH`20)
X`20`20`20`20`20`20num_files`20=`200
Xc
Xc`20---`20loop`20over`20wildcards`20for`20each`20file;`20"MYOPEN"`20does`20all
V`20the`20work
Xc
X10`20`20`20`20call`20getfile`20(`20path,`20next_file`20)
X`20`20`20`20`20`20if`20(next_file`20.ne.`20'`20')`20then
X`20`20`20`20`20`20`20`20`20call`20parse`20(next_file,`20'`20',`20'LO',`20names
V(num_files+1))
Xc`20`20`20`20`20`20`20`20`20names(num_files+1)`20=`20next_file
X`20`20`20`20`20`20`20`20`20OPEN`20(UNIT=0,`20FILE=next_file(1:length(next_file
V)),
X`20`20`20`20`20$`20`20`20`20`20`20STATUS='OLD',`20ERR=10,`20useropen=my_open)
V
X30`20`20`20`20`20`20`20close(unit=0)
X`20`20`20`20`20`20`20`20`20if`20(num_files`20.le.`20max_files)`20go`20to`2010
V
X`20`20`20`20`20`20endif
XC
XC`20---`20sort`20file`20list`20by`20date`20or`20size
XC
X`20`20`20`20`20`20IF`20(S_FLAG)`20THEN
X`20`20`20`20`20`20`20`20`20call`20isorti`20`20(size,`20num_files,`20indx)`20
V`20`20`20`20`20!`20by`20File`20SIZE`20!!!
X`20`20`20`20`20`20ELSE
X`20`20`20`20`20`20`20`20`20call`20isorti8`20(date,`20num_files,`20indx)`20`20
V`20`20`20`20!`20by`20DATES`20!!!
X`20`20`20`20`20`20ENDIF
XC
XC`20---`20In`20descending`20order`20?
XC
X`20`20`20`20`20`20IF`20(D_FLAG)`20THEN
X`20`20`20`20`20`20`20`20`20ISTART`20=`20NUM_FILES
X`20`20`20`20`20`20`20`20`20IEND`20`20`20=`201
X`20`20`20`20`20`20`20`20`20INCR`20`20`20=`20-1
X`20`20`20`20`20`20ELSE
X`20`20`20`20`20`20`20`20`20ISTART`20=`201
X`20`20`20`20`20`20`20`20`20IEND`20`20`20=`20NUM_FILES
X`20`20`20`20`20`20`20`20`20INCR`20`20`20=`201
X`20`20`20`20`20`20ENDIF
XC
XC`20--`20Note`20that`20directory`20files`20are`20bolded`20on`20output
Xc
X`20`20`20`20`20`20DO`20100`20I`20=`20ISTART,`20IEND,`20INCR
X`20`20`20`20`20`20`20`20`20ln`20=`20length(names(indx(i)))
Xc
Xc`20`20-----`20`20Sorted`20by`20size
Xc
X`20`20`20`20`20`20`20`20`20if`20(s_flag)`20then
X`20`20`20`20`20`20`20`20`20`20`20`20if`20(direc(indx(i)))`20then
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(ln`20.le.`2030)`20then
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20(6,900)`20on,
X`20`20`20`20`20$`20`20`20`20`20`20`20`20`20`20`20`20`20`20names(indx(i))(1:ln)
V,`20off,`20size(i)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20(6,901)`20on,
X`20`20`20`20`20$`20`20`20`20`20`20`20`20`20`20`20`20`20`20names(indx(i))(1:ln)
V,`20off,`20size(i)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20endif
X`20`20`20`20`20`20`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(ln`20.le.`2030)`20then
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20(6,910)`20names(
Vindx(i))(1:ln),`20size(i)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20(6,911)`20names(
Vindx(i))(1:ln),`20size(i)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20endif
X`20`20`20`20`20`20`20`20`20`20`20`20endif
Xc
Xc`20`20-----`20`20Sorted`20by`20date
Xc
X`20`20`20`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20`20`20`20call`20sys$asctim`20(`20,`20adate,`20date(
Vi)`20,)
X`20`20`20`20`20`20`20`20`20`20`20`20if`20(direc(indx(i)))`20then
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(ln`20.le.`2030)`20then
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20(6,920)`20on,`20
V
X`20`20`20`20`20$`20`20`20`20`20`20`20`20`20`20`20`20`20`20names(indx(i))(1:ln)
V,`20off,`20adate(1:17)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20(6,921)`20on,`20
V
X`20`20`20`20`20$`20`20`20`20`20`20`20`20`20`20`20`20`20`20names(indx(i))(1:ln)
V,`20off,`20adate(1:17)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20endif
X`20`20`20`20`20`20`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(ln`20.le.`2030)`20then
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20(6,930)`20names(
Vindx(i))(1:ln),`20adate(1:17)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20write`20(6,931)`20names(
Vindx(i))(1:ln),`20adate(1:17)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20endif
X`20`20`20`20`20`20`20`20`20`20`20`20endif
X`20`20`20`20`20`20`20`20`20endif
X100`20`20`20CONTINUE
XC`20`20`20`20`20`20`20
X`20`20`20`20`20`20CALL`20EXIT
X900`20`20`20format('`20',3a,t38,i5)
X901`20`20`20format('`20',3a/,t38,i5)
X910`20`20`20format('`20',a,t30,i5)
X911`20`20`20format('`20',a/,t30,i5)
X920`20`20`20format('`20',3a,t38,a)
X921`20`20`20format('`20',3a/,t38,a)
X930`20`20`20format('`20',a,t30,a)
X931`20`20`20format('`20',a/,t30,a)
X`20`20`20`20`20`20END
XC
XC---END`20SDIR
XC
X`20`20`20`20`20`20integer`20function`20my_open`20(fab,`20rab,`20lun)
Xc*
Xc*`20`20This`20routine`20is`20called`20by`20the`20FORTRAN`20OPEN`20statement
V`20to`20extract`20the
Xc*`20`20`20file`20size,`20date,`20and`20directory`20flag`20for`20each`20file.
V
Xc*
X`20`20`20`20`20`20PARAMETER`20(MAX_FILES=1000)
X`20`20`20`20`20`20common`20/data/`20
X`20`20`20`20`20$`20date(max_files),`20direc(max_files),`20`20size(max_files),
V`20`20
X`20`20`20`20`20$`20names(max_files),`20num_files
X`20`20`20`20`20`20logical`20direc
X`20`20`20`20`20`20integer`20size
X`20`20`20`20`20`20integer`20*8`20date
X`20`20`20`20`20`20character`20*80`20names
Xc
X`20`20`20`20`20`20include`20'($fabdef)'
X`20`20`20`20`20`20include`20'($rabdef)'
X`20`20`20`20`20`20include`20'($xabdef)'
X`20`20`20`20`20`20include`20'($xabdatdef)'
X`20`20`20`20`20`20include`20'($xabfhcdef)'
X`20`20`20`20`20`20include`20'($xabitmdef)'
Xc
Xc`20---`20is`20this`20comlicated,`20or`20what?
Xc
X`20`20`20`20`20`20structure`20/bigxab/
X`20`20`20`20`20`20union
X`20`20`20`20`20`20`20`20`20map
X`20`20`20`20`20`20`20`20`20record/xabdef/`20xab
X`20`20`20`20`20`20`20`20`20endmap
X`20`20`20`20`20`20`20`20`20map
X`20`20`20`20`20`20`20`20`20record`20/xabdatdef/`20xabdat
X`20`20`20`20`20`20`20`20`20endmap
X`20`20`20`20`20`20endunion
X`20`20`20`20`20`20endstructure
Xc
X`20`20`20`20`20`20structure`20/bigxab1/
X`20`20`20`20`20`20union
X`20`20`20`20`20`20`20`20`20map
X`20`20`20`20`20`20`20`20`20record/xabdef/`20xaba
X`20`20`20`20`20`20`20`20`20endmap
X`20`20`20`20`20`20`20`20`20map
X`20`20`20`20`20`20`20`20`20record`20/xabfhcdef/`20xabfhc
X`20`20`20`20`20`20`20`20`20endmap
X`20`20`20`20`20`20endunion
X`20`20`20`20`20`20endstructure
Xc
X`20`20`20`20`20`20structure`20/bigxab2/
X`20`20`20`20`20`20union
X`20`20`20`20`20`20`20`20`20map
X`20`20`20`20`20`20`20`20`20record/xabdef/`20xabb
X`20`20`20`20`20`20`20`20`20endmap
X`20`20`20`20`20`20`20`20`20map
X`20`20`20`20`20`20`20`20`20record`20/xabitmdef/`20xabitm
X`20`20`20`20`20`20`20`20`20endmap
X`20`20`20`20`20`20endunion
X`20`20`20`20`20`20endstructure
Xc
X`20`20`20`20`20`20record`20/fabdef/`20fab
X`20`20`20`20`20`20record`20/rabdef/`20rab
X`20`20`20`20`20`20record`20/bigxab/`20xabbig
X`20`20`20`20`20`20record`20/bigxab1/`20xab1
X`20`20`20`20`20`20record`20/bigxab2/`20xab2
Xc
X`20`20`20`20`20`20structure`20/itmlst/
X`20`20`20`20`20`20`20`20`20integer`20*2`20`20buflen
X`20`20`20`20`20`20`20`20`20integer`20*2`20`20itemcode
X`20`20`20`20`20`20`20`20`20integer`20*4`20`20bufadr
X`20`20`20`20`20`20`20`20`20integer`20*4`20`20retlen
X`20`20`20`20`20`20end`20structure`20
X`20`20`20`20`20`20record`20/itmlst/`20items(3)
Xc
X`20`20`20`20`20`20logical`20is_dir
X`20`20`20`20`20`20integer`20sys$open,`20sys$connect
X`20`20`20`20`20`20integer`20*8`20tdate
X`20`20`20`20`20`20integer`20parts(2)
X`20`20`20`20`20`20equivalence`20(parts(1),tdate)
Xc
X`20`20`20`20`20`20fab.fab$b_fac`20=`20fab$m_get`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20!`20readonly
Xc
X`20`20`20`20`20`20xabbig.xab.xab$b_cod`20=`20xab$c_dat`20`20`20`20`20`20`20!
V`20This`20is`20a`20DATE`20XAB
X`20`20`20`20`20`20xabbig.xab.xab$b_bln`20=`20xab$c_datlen
X`20`20`20`20`20`20xabbig.xab.xab$l_nxt`20=`20%loc(xab1)
Xc
X`20`20`20`20`20`20xab1.xaba.xab$b_cod`20=`20xab$c_fhc`20`20`20`20`20`20`20`20!
V`20size`20XAB
X`20`20`20`20`20`20xab1.xaba.xab$b_bln`20=`20xab$c_fhclen
X`20`20`20`20`20`20xab1.xaba.xab$l_nxt`20=`20%loc(xab2)
Xc
X`20`20`20`20`20`20xab2.xabb.xab$b_cod`20=`20xab$c_itm`20`20`20`20`20`20`20`20!
V`20Item`20code`20XAB
X`20`20`20`20`20`20xab2.xabb.xab$b_bln`20=`20xab$c_itmlen
X`20`20`20`20`20`20xab2.xabitm.xab$b_mode=`20xab$k_sensemode
X`20`20`20`20`20`20xab2.xabitm.xab$l_itemlist`20=`20%loc(items)
X`20`20`20`20`20`20xab2.xabb.xab$l_nxt`20=`200
Xc
X`20`20`20`20`20`20items(1).itemcode`20=`20XAB$_UCHAR_DIRECTORY`20`20!`20IS`20t
Vhis`20file`20a`20directory?
X`20`20`20`20`20`20items(1).buflen`20`20`20=`204
X`20`20`20`20`20`20items(1).bufadr`20`20`20=`20%loc(is_dir)
X`20`20`20`20`20`20items(1).retlen`20`20`20=`200
X`20`20`20`20`20`20items(2).itemcode`20=`200
X`20`20`20`20`20`20items(2).buflen`20`20`20=`200
Xc
X`20`20`20`20`20`20fab.fab$l_xab`20=`20%loc(xabbig)
Xc
X`20`20`20`20`20`20my_open`20=`20sys$open`20(fab)
X`20`20`20`20`20`20if`20(.not.`20my_open)`20return
X`20`20`20`20`20`20my_open`20=`20sys$connect`20(rab)
X`20`20`20`20`20`20if`20(.not.`20my_open)`20return
Xc
X`20`20`20`20`20`20num_files`20=`20num_files`20+`201`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20!`20Success,`20add`20the`20file
X`20`20`20`20`20`20parts(1)`20=`20xabbig.xabdat.xab$q_cdt(1)`20`20!`20Date`20is
V`20stored`20in`20two`20parts
X`20`20`20`20`20`20parts(2)`20=`20xabbig.xabdat.xab$q_cdt(2)
X`20`20`20`20`20`20date(num_files)`20=`20tdate
X`20`20`20`20`20`20direc(num_files)`20=`20is_dir
Xc
Xc`20---`20the`20calculation`20for`20size`20comes`20from`20an`20example`20on`20
Vthe`20DEC`20
Xc`20`20`20`20`20bulletin`20board
Xc
X`20`20`20`20`20`20if`20(xab1.xabfhc.xab$w_ffb`20.eq.`200)`20then
X`20`20`20`20`20`20`20`20`20if`20(xab1.xabfhc.xab$l_hbk`20.eq.`200)`20then
X`20`20`20`20`20`20`20`20`20`20`20`20size(num_files)`20=`200
X`20`20`20`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20`20`20`20size(num_files)`20=`20xab1.xabfhc.xab$l_eb
Vk`20-`201
X`20`20`20`20`20`20`20`20`20endif
X`20`20`20`20`20`20else
X`20`20`20`20`20`20`20`20`20size(num_files)`20=`20xab1.xabfhc.xab$l_ebk
X`20`20`20`20`20`20endif
Xc
Xc`20---`20let`20the`20OPEN`20statement`20know`20we`20are`20ok`20(Otherwise`20t
Vhe`20ERR=`20gets
Xc`20`20`20`20`20`20executed)
Xc
X`20`20`20`20`20`20my_open`20=`201
X`20`20`20`20`20`20return
X`20`20`20`20`20`20end
Xc
Xc---end`20my_open
Xc
X`09SUBROUTINE`20DEFAULT`20(DIR_STRING)
X*
X*`09Returns,`20in`20the`20character`20string`20DIR_STRING,`20the`20name`20of
V`20the`20`20cur-
X*`09rent`20`20default`20device`20and`20directory.`20`20The`20string`20DIR_STRI
VNG`20must`20be
X*`09long`20enough`20to`20contain`20the`20name,`20or`20this`20routine`20will`20
Vabort.
X*
X*`09Alan`20L.`20Zirkle`20`20`20`20`20Naval`20Surface`20Warfare`20Center
X*`09`09`09`20`20`20Code`20K53
X*`099`20Nov`201983`09`20`20`20Dahlgren,`20Virginia`20`2022448
X*
X`09IMPLICIT`20INTEGER`20(A-Z)
X`09CHARACTER*(*)`20DIR_STRING
XC
X`09STATUS`20=`20SYS$TRNLOG('SYS$DISK',LEN1,DIR_STRING,,,)
X`09IF`20(.NOT.STATUS)`20CALL`20LIB$STOP(%VAL(STATUS))
XC
X`09STATUS`20=`20SYS$SETDDIR(,LEN2,DIR_STRING(LEN1+1:))
X`09IF`20(.NOT.STATUS)`20CALL`20LIB$STOP(%VAL(STATUS))
XC
X`09LEN1`20=`20LEN1`20+`20LEN2
X`09IF`20(LEN1.LT.LEN(DIR_STRING))`20DIR_STRING(LEN1+1:)`20=`20'`20'
XC
X`20`20`20`20`20`20RETURN
X`09END
X`20`20`20`20`20`20SUBROUTINE`20GETFILE`20(`20INFILE,`20OUTFILE`20)
XC*
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20GETFILE`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*
XC*`20`20`20`20`20SUBPROGRAM`20:
XC*`20`20`20`20`20`20`20`20`20`20GETFILE
XC*
XC*`20`20`20`20`20AUTHOR`20:
XC*`20`20`20`20`20`20`20`20`20`20Arthur`20E.`20Ragosta
XC*`20`20`20`20`20`20`20`20`20`20MS`20219-3
XC*`20`20`20`20`20`20`20`20`20`20NASA`20Ames`20Research`20Center
XC*`20`20`20`20`20`20`20`20`20`20Moffett`20Field,`20Ca.`20`2094035
XC*`20`20`20`20`20`20`20`20`20`20(415)`20604-5558
XC*
XC*`20`20`20`20`20PURPOSE`20:
XC*`20`20`20`20`20`20`20`20`20`20RETRIEVE`20THE`20NEXT`20FILE`20NAME`20FROM`20A
V`20LIST`20(INCLUDING`20
XC*`20`20`20`20`20`20`20`20`20`20`20WILDCARDS).`20`20
XC*
XC*`20`20`20`20`20INPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20INFILE`20-`20THE`20STRING`20CONTAINING`20THE
V`20LIST
XC*
XC*`20`20`20`20`20OUTPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20OUTFILE`20-`20NEXT`20NAME`20FROM`20THE`20LIST
V
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20(IF`20"INFILE"
V`20CHANGES,`20WE`20START`20OVER`20AT`20FIRST`20FILE)
XC*
XC*`20`20`20`20`20SUBPROGRAM`20REFERENCES`20:
XC*`20`20`20`20`20`20`20`20`20`20LENGTH,`20LIB$FIND_FILE
XC*
XC*`20`20`20`20`20ASSUMPTIONS`20AND`20RESTRICTIONS`20:
XC*`20`20`20`20`20`20`20`20`20`20ONLY`20TEN`20FILESPECS`20MAY`20BE`20INCLUDED
V`20IN`20A`20LIST
XC*`20`20`20`20`20`20`20`20`20`20EACH`20FILESPEC`20MUST`20BE`20127`20CHARACTERS
V`20OR`20LESS
XC*
XC*`20`20`20`20`20LANGUAGE`20AND`20COMPILER`20:
XC*`20`20`20`20`20`20`20`20`20`20ANSI`20FORTRAN`2077
XC*
XC*`20`20`20`20`20CHANGE`20HISTORY`20:
XC*`20`20`20`20`20`20`20`20`20`2010-MAY-1988`20`20-`20`20INITIAL`20VERSION
XC*
XC***********************************************************************
XC*
X`20`20`20`20`20`20CHARACTER`20*(*)`20INFILE,`20OUTFILE
X`20`20`20`20`20`20CHARACTER`20*127`20WFILE,`20LIST(10)
X`20`20`20`20`20`20INCLUDE`20'($RMSDEF)'
X`20`20`20`20`20`20DATA`20WFILE/'????????'/
XC
XC`20---`20NEW`20FILE`20NAME?
XC
X`20`20`20`20`20`20IF`20(INFILE`20.NE.`20WFILE`20)`20THEN
X`20`20`20`20`20`20`20`20`20LENFILE`20=`20LENGTH`20(INFILE)
X`20`20`20`20`20`20`20`20`20IF`20(LENFILE`20.EQ.`200)`20RETURN
X`20`20`20`20`20`20`20`20`20WFILE`20=`20INFILE
X`20`20`20`20`20`20`20`20`20NL`20`20`20`20=`200
X`20`20`20`20`20`20`20`20`20IL`20`20`20`20=`201
X`20`20`20`20`20`20`20`20`20ICON`20`20=`200
XC
XC`20---`20IF`20ITS`20A`20LIST,`20PARSE`20INPUT`20LINE`20INTO`20INDIVIDUAL`20FI
VLE`20SPECS
XC
X`20`20`20`20`20`20`20`20`20IF`20((INDEX(INFILE,',')`20.NE.`200)`20.OR.
X`20`20`20`20`20$`20`20`20`20`20`20`20(INFILE(1:1)`20.EQ.`20'('))`20THEN
X`20`20`20`20`20`20`20`20`20`20`20`20IF`20(INFILE(1:1)`20.EQ.`20'(')`20THEN
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20IPTR`20=`202
X`20`20`20`20`20`20`20`20`20`20`20`20ELSE
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20IPTR`20=`201
X`20`20`20`20`20`20`20`20`20`20`20`20ENDIF
X`20`20`20`20`20`20`20`20`20`20`20`20NPTR`20=`20IPTR
X10`20`20`20`20`20`20`20`20`20`20IPTR`20=`20IPTR`20+`201
X`20`20`20`20`20`20`20`20`20`20`20`20IF`20(INFILE(IPTR:IPTR)`20.EQ.`20',')`20TH
VEN
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20NL`20=`20NL`20+`201
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LIST(NL)`20=`20INFILE(NPTR:IPTR-1
V)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20NPTR`20=`20IPTR`20+`201
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20IPTR`20=`20NPTR
X`20`20`20`20`20`20`20`20`20`20`20`20ELSE`20IF`20(INFILE(IPTR:IPTR)`20.EQ.`20')
V')`20THEN
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20NL`20=`20NL`20+`201
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LIST(NL)`20=`20INFILE(NPTR:IPTR-1
V)
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20IPTR`20=`20LENFILE`20+`201
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20NPTR`20=`20IPTR
X`20`20`20`20`20`20`20`20`20`20`20`20ENDIF
X`20`20`20`20`20`20`20`20`20`20`20`20IF`20(IPTR`20.LE.`20LENFILE)`20GO`20TO`201
V0
XC
XC`20---`20MISSING`20RIGHT`20PARENTHESIS?
XC
X`20`20`20`20`20`20`20`20`20`20`20`20IF`20(IPTR`20.GT.`20NPTR)`20THEN
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20NL`20=`20NL`20+`201
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20LIST(NL)`20=`20INFILE(NPTR:IPTR)
V
X`20`20`20`20`20`20`20`20`20`20`20`20ENDIF
XC
XC`20---`20OTHERWISE,`20A`20SINGLE`20FILESPEC
XC
X`20`20`20`20`20`20`20`20`20ELSE
X`20`20`20`20`20`20`20`20`20`20`20`20NL`20=`201
X`20`20`20`20`20`20`20`20`20`20`20`20LIST(NL)`20=`20INFILE
X`20`20`20`20`20`20`20`20`20ENDIF
X`20`20`20`20`20`20ENDIF
XC
XC`20---`20GET`20NEXT`20NAME`20FOR`20THE`20CURRENT`20FILESPEC
XC
X20`20`20`20`20ISTAT`20=`20LIB$FIND_FILE`20(LIST(IL),`20OUTFILE,`20ICON,,,,)
X`20`20`20`20`20`20IF`20((ISTAT`20.EQ.`20RMS$_NMF)`20.OR.`20(ISTAT`20.EQ.`20RMS
V$_FNF))`20THEN
XC
XC`20---`20ALL`20DONE`20FOR`20THIS`20FILESPEC,`20SEE`20IF`20THERE`20IS`20ANOTHE
VR
XC
X`20`20`20`20`20`20`20`20`20ISTAT`20=`20LIB$FIND_FILE_END`20(ICON)
X`20`20`20`20`20`20`20`20`20ICON`20=`200
X`20`20`20`20`20`20`20`20`20IF`20(IL`20.GE.`20NL)`20THEN
X`20`20`20`20`20`20`20`20`20`20`20`20OUTFILE`20=`20'`20'
X`20`20`20`20`20`20`20`20`20ELSE
X`20`20`20`20`20`20`20`20`20`20`20`20IL`20=`20IL`20+`201
X`20`20`20`20`20`20`20`20`20`20`20`20GO`20TO`2020
X`20`20`20`20`20`20`20`20`20ENDIF
X`20`20`20`20`20`20ENDIF
XC
X`20`20`20`20`20`20RETURN
X`20`20`20`20`20`20END
XC
XC---END`20GETFILE
XC
X`20`20`20`20`20`20SUBROUTINE`20GETFOR`20(`20NQ,`20QUALS,`20NP,`20PARAMS`20)
XC*
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20GETFOR`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*
XC*`20`20`20`20`20SUBPROGRAM`20:
XC*`20`20`20`20`20`20`20`20`20`20GET`20FOREIGN
XC*
XC*`20`20`20`20`20AUTHOR`20:
XC*`20`20`20`20`20`20`20`20`20`20ART`20RAGOSTA
XC*`20`20`20`20`20`20`20`20`20`20MS`20219-3
XC*`20`20`20`20`20`20`20`20`20`20AMES`20RESEARCH`20CENTER
XC*`20`20`20`20`20`20`20`20`20`20MOFFETT`20FIELD,`20CALIF`20`2094035
XC*`20`20`20`20`20`20`20`20`20`20(415)`20604-5558
XC*
XC*`20`20`20`20`20PURPOSE`20:
XC*`20`20`20`20`20`20`20`20`20`20TO`20RETURN`20ANY`20PARAMETERS`20AND/OR`20QUAL
VIFIERS`20ENTERED`20ON`20A
XC*`20`20`20`20`20`20`20`20`20`20FOREIGN`20COMMAND`20LINE.
XC*
XC*`20`20`20`20`20METHODOLOGY`20:
XC*`20`20`20`20`20`20`20`20`20`20USE`20VMS`20GET_FOREIGN`20ROUTINE`20THEN`20PAR
VSE`20USING`20'`20'`20AND`20'/'
XC*`20`20`20`20`20`20`20`20`20`20AS`20VALID`20DELIMITERS.
XC*
XC*`20`20`20`20`20OUTPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20NQ`20`20`20`20`20-`20NUMBER`20OF`20QUALIFIERS
V`20FOUND
XC*`20`20`20`20`20`20`20`20`20`20QUALS`20`20-`20THE`20LIST`20OF`20QUALIFIERS(LE
VSS`20SLASH)
XC*`20`20`20`20`20`20`20`20`20`20NP`20`20`20`20`20-`20NUMBER`20OF`20PARAMETERS
V`20FOUND
XC*`20`20`20`20`20`20`20`20`20`20PARAMS`20-`20THE`20LIST`20OF`20PARAMETERS
XC*
XC*`20`20`20`20`20SUBPROGRAM`20REFERENCES`20:
XC*`20`20`20`20`20`20`20`20`20`20LIB$GET_FOREIGN
XC*
XC*`20`20`20`20`20TRANSPORTABILITY`20LIMITATIONS`20:
XC*`20`20`20`20`20`20`20`20`20`20UNLIKELY`20TO`20BE`20TRANSPORTABLE`20TO`20ANY
V`20SYSTEM`20BUT`20VMS.
XC*
XC*`20`20`20`20`20ASSUMPTIONS`20AND`20RESTRICTIONS`20:
XC*`20`20`20`20`20`20`20`20`20`20ANYTHING`20ENCLOSED`20IN`20QUOTES`20IS`20A`20P
VARAMETER
XC*`20`20`20`20`20`20`20`20`20`20SLASHES`20AND`20BLANKS`20ARE`20DELIMITERS`20UN
VLESS`20ENCLOSED`20IN`20QUOTES
XC*
XC*`20`20`20`20`20LANGUAGE`20AND`20COMPILER`20:
XC*`20`20`20`20`20`20`20`20`20`20ANSI`20FORTRAN`2077
XC*
XC*`20`20`20`20`20CHANGE`20HISTORY`20:
XC*`20`20`20`20`20`20`20`20`20`2022-MAR-91`20`20`20`20Parameters`20enclosed`20i
Vn`20double`20quotes`20added
XC*`20`20`20`20`20`20`20`20`20`2018-NOV-86`20`20`20`20COMMAND`20LINE`20INCREASE
VD`20TO`20255`20FROM`2080
XC*`20`20`20`20`20`20`20`20`20`2024-JAN-85`20`20`20`20INITIAL`20VERSION
XC*
XC***********************************************************************
XC*
X`20`20`20`20`20`20INCLUDE`20'($SSDEF)'
X`20`20`20`20`20`20CHARACTER`20*255`20COMMAN
X`20`20`20`20`20`20CHARACTER`20*(*)`20QUALS(1),PARAMS(1)
X`20`20`20`20`20`20LOGICAL`20QUOTED
XC
X`20`20`20`20`20`20IP`20`20`20`20=`200
X`20`20`20`20`20`20NQ`20`20`20`20=`200
X`20`20`20`20`20`20NP`20`20`20`20=`200
X`20`20`20`20`20`20LS`20`20`20`20=`20LEN(QUALS(1))
XC
XC`20---`20RETURN`20COMMAND`20LINE`20(LESS`20FOREIGN`20COMMAND)
XC
X`20`20`20`20`20`20IF`20(LIB$GET_FOREIGN(COMMAN,,IP)`20.NE.`20SS$_NORMAL)`20RET
VURN
X`20`20`20`20`20`20IF`20(IP`20.LE.`200)`20RETURN
X`20`20`20`20`20`20I`20=`201`20`20`20`20`20`20`20`20`20`20`20`20`20!`20NEXT`20L
VOCATION`20IN`20INPUT`20LINE
XC
XC`20---`20LOOP`20WHILE`20LINE`20STILL`20HAS`20CHARACTERS`20IN`20IT
XC`20---`20SKIP`20LEADING`20SPACES
XC
X90`20`20`20`20IF`20(COMMAN(I:I)`20.EQ.`20'`20')`20THEN
X`20`20`20`20`20`20`20`20`20I`20=`20I`20+`201
X`20`20`20`20`20`20`20`20`20IF`20(I`20.GT.`20IP)`20GO`20TO`20300
X`20`20`20`20`20`20`20`20`20GO`20TO`2090
X`20`20`20`20`20`20ENDIF
XC
XC`20---`20OK,`20NONBLANK`20CHARACTER.`20`20IS`20IT`20A`20QUALIFIER`20OR`20PARA
VMETER?
XC
X100`20`20`20IF`20(`20COMMAN(I:I)`20.EQ.`20'/'`20)`20THEN
XC
XC`20---`20A`20QUALIFIER...`20DO`20NOT`20INCLUDE`20SLASH
XC
X`20`20`20`20`20`20`20`20`20I`20=`20I`20+`201
X`20`20`20`20`20`20`20`20`20IF`20(I`20.GT.`20IP)`20GO`20TO`20300
X`20`20`20`20`20`20`20`20`20IF`20(COMMAN(I:I)`20.EQ.`20'`20')`20GO`20TO`2090
X`20`20`20`20`20`20`20`20`20NQ`20=`20NQ`20+`201
X`20`20`20`20`20`20`20`20`20NC`20=`201
X`20`20`20`20`20`20`20`20`20QUALS(NQ)`20=`20'`20'
XC
XC`20----`20`20ADD`20CHARACTERS`20UNTIL`20A`20SPACE`20OR`20SLASH`20FOUND,`20OR
V`20END`20OF`20LINE
XC
X110`20`20`20`20`20`20IF`20(COMMAN(I:I)`20.EQ.`20'/')`20GO`20TO`20100
X`20`20`20`20`20`20`20`20`20IF`20(COMMAN(I:I)`20.EQ.`20'`20')`20GO`20TO`2090
X`20`20`20`20`20`20`20`20`20IF`20(NC`20.LE.`20LS`20)`20QUALS(NQ)(NC:NC)`20=`20C
VOMMAN(I:I)
X`20`20`20`20`20`20`20`20`20I`20=`20I`20+`201
X`20`20`20`20`20`20`20`20`20IF`20(I`20.GT.`20IP)`20GO`20TO`20300
X`20`20`20`20`20`20`20`20`20NC`20=`20NC`20+`201
X`20`20`20`20`20`20`20`20`20GO`20TO`20110
X`20`20`20`20`20`20ELSE
XC
XC`20---`20PARAMETER...`20FIRST`20CHARACTER`20IS`20ALREADY`20NON-BLANK
XC
X`20`20`20`20`20`20`20`20`20NP`20=`20NP`20+`201
X`20`20`20`20`20`20`20`20`20NC`20=`201
X`20`20`20`20`20`20`20`20`20PARAMS(NP)`20=`20'`20'
X`20`20`20`20`20`20`20`20`20QUOTED`20=`20COMMAN(I:I)`20.EQ.`20'"'
X`20`20`20`20`20`20`20`20`20IF`20(QUOTED)`20THEN
X`20`20`20`20`20`20`20`20`20`20`20`20I`20=`20I`20+`201
X`20`20`20`20`20`20`20`20`20`20`20`20IF`20(I`20.GT.`20IP)`20GO`20TO`20300
X`20`20`20`20`20`20`20`20`20ENDIF
XC
XC`20---`20ADD`20CHARACTERS`20UNTIL`20A`20BLANK`20OR`20SLASH`20IS`20FOUND`20(IF
V`20UNQUOTED)
XC`20---`20ADD`20CHARACTERS`20UNTIL`20A`20QUOTE`20IS`20FOUND`20(IF`20QUOTED)
XC
X210`20`20`20`20`20`20IF`20(QUOTED)`20THEN
X`20`20`20`20`20`20`20`20`20`20`20`20IF`20(COMMAN(I:I)`20.EQ.`20'"')`20THEN
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20I`20=`20I`20+`201
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20IF`20(I`20.GT.`20IP)`20GO`20TO`20
V300
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20GO`20TO`2090
X`20`20`20`20`20`20`20`20`20`20`20`20ENDIF
X`20`20`20`20`20`20`20`20`20ELSE
X`20`20`20`20`20`20`20`20`20`20`20`20IF`20((COMMAN(I:I)`20.EQ.`20'`20')`20.OR.
V`20(COMMAN(I:I)`20.EQ.`20'/'))
X`20`20`20`20`20$`20`20`20`20`20`20`20`20`20`20`20`20GO`20TO`2090`20
X`20`20`20`20`20`20`20`20`20ENDIF
XC
X`20`20`20`20`20`20`20`20`20IF`20(NC`20.LE.`20LS)`20PARAMS(NP)(NC:NC)`20=`20COM
VMAN(I:I)
X`20`20`20`20`20`20`20`20`20NC`20=`20NC`20+`201
X`20`20`20`20`20`20`20`20`20I`20=`20I`20+`201
X`20`20`20`20`20`20`20`20`20IF`20(I`20.GT.`20IP)`20GO`20TO`20300
X`20`20`20`20`20`20`20`20`20GO`20TO`20210
X`20`20`20`20`20`20ENDIF
X`20`20`20`20`20`20GO`20TO`20100
XC
XC`20---`20END`20OF`20LOOP`20WHILE`20LINE`20STILL`20HAS`20CHARACTERS
XC
X300`20`20`20RETURN
X`20`20`20`20`20`20END
XC
XC---END`20GETFOR
XC
X`20`20`20`20`20`20SUBROUTINE`20ISORTI`20(`20ARRAY,`20NUM,`20INDX`20)
XC*
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20ISORT`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*
XC*`20`20`20`20`20AUTHOR`20:
XC*`20`20`20`20`20`20`20`20`20`20ART`20RAGOSTA
XC*`20`20`20`20`20`20`20`20`20`20MS`20219-3
XC*`20`20`20`20`20`20`20`20`20`20AMES`20RESEARCH`20CENTER
XC*`20`20`20`20`20`20`20`20`20`20MOFFETT`20FIELD,`20CALIF`2094035
XC*`20`20`20`20`20`20`20`20`20`20(415)`20604-5558
XC*
XC*`20`20`20`20`20PURPOSE`20:
XC*`20`20`20`20`20`20`20`20`20`20PRODUCE`20A`20SORTED`20INDEX`20POINTER`20ARRAY
V
XC*`20`20`20`20`20`20`20`20`20`20THE`20INPUT`20ARRAY`20IS`20SORTED`20AS`20WELL
V`20AS`20THE`20ARRAY
XC*`20`20`20`20`20`20`20`20`20`20'INDX'.`20THEREFORE,`20INDX`20CAN`20BE`20USED
V`20TO`20PRINT
XC*`20`20`20`20`20`20`20`20`20`20ANY`20NUMBER`20OF`20RELATED`20ARRAYS.
XC*
XC*
XC*`20`20`20`20`20METHODOLOGY`20:
XC*`20`20`20`20`20`20`20`20`20`20SHELLSORT
XC*
XC*`20`20`20`20`20INPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20NUM`20`20`20`20-`20NUMBER`20OF`20ELEMENTS`20IN
V`20ARRAY
XC*`20`20`20`20`20`20`20`20`20`20ARRAY`20`20-`20ARRAY`20TO`20BE`20SORTED
XC*
XC*`20`20`20`20`20OUTPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20INDX`20`20`20-`20INDEX`20ARRAY
XC*
XC*`20`20`20`20`20INTERNAL`20WORK`20AREAS`20:
XC*`20`20`20`20`20`20`20`20`20`20TEMPA`20-`20USED`20DURING`20SWAPS
XC*
XC*`20`20`20`20`20ASSUMPTIONS`20AND`20RESTRICTIONS`20:
XC*`20`20`20`20`20`20`20`20`20`20THE`20TYPE`20OF`20THE`20ARRAY`20'ARRAY'`20AND
V`20THE`20VARIABLE`20'TEMPA'
XC*`20`20`20`20`20`20`20`20`20`20MUST`20BE`20SET`20FOR`20EACH`20TYPE`20OF`20SOR
VT.`20`20FOR`20THIS`20PARTICULAR
XC*`20`20`20`20`20`20`20`20`20`20IMPLEMENTATION,`20THE`20ARRAY`20IS`20CHARACTER
V`20WITH`20LENGTH`20<=`20255.
XC*
XC*`20`20`20`20`20LANGUAGE`20AND`20COMPILER`20:
XC*`20`20`20`20`20`20`20`20`20`20ANSI`20FORTRAN`2077
XC*
XC*`20`20`20`20`20CHANGE`20HISTORY`20:
XC*`20`20`20`20`20`20`20`20`20`2003/12/84`20`20`20`20`20INITIAL`20VERSION
XC*
XC***********************************************************************
XC*
X`20`20`20`20`20`20DIMENSION`20INDX(1)
X`20`20`20`20`20`20INTEGER`20ARRAY(1)
X`20`20`20`20`20`20INTEGER`20TEMPI,`20tempa
X`20`20`20`20`20`20LOGICAL`20DONE
XC
X`20`20`20`20`20`20DO`2010`20I`20=`201,`20NUM
X`20`20`20`20`20`20`20`20`20INDX(I)`20=`20I
X10`20`20`20`20`20`20`20CONTINUE
X`20`20`20`20`20`20IF`20(NUM`20.LE.`201)`20RETURN
X`20`20`20`20`20`20JUMP`20=`20NUM
X20`20`20`20`20JUMP`20=`20JUMP`20/`202
X30`20`20`20`20DONE`20=`20.TRUE.
X`20`20`20`20`20`20NJ`20=`20NUM-JUMP
X`20`20`20`20`20`20DO`2040`20J`20=`201,`20NJ
X`20`20`20`20`20`20`20`20`20I`20=`20J`20+`20JUMP
X`20`20`20`20`20`20`20`20`20IF`20(ARRAY(J)`20.GT.`20ARRAY(I))THEN
X`20`20`20`20`20`20`20`20`20`20`20`20DONE`20=`20.FALSE.
X`20`20`20`20`20`20`20`20`20`20`20`20TEMPA`20=`20ARRAY(J)
X`20`20`20`20`20`20`20`20`20`20`20`20ARRAY(J)`20=`20ARRAY(I)
X`20`20`20`20`20`20`20`20`20`20`20`20ARRAY(I)`20=`20TEMPA
X`20`20`20`20`20`20`20`20`20`20`20`20TEMPI`20=`20INDX(J)
X`20`20`20`20`20`20`20`20`20`20`20`20INDX(J)`20=`20INDX(I)
X`20`20`20`20`20`20`20`20`20`20`20`20INDX(I)`20=`20TEMPI
X`20`20`20`20`20`20`20`20`20ENDIF
X40`20`20`20`20`20`20`20CONTINUE
X`20`20`20`20`20`20IF`20(.NOT.`20DONE)`20GO`20TO`2030
X`20`20`20`20`20`20IF`20(JUMP`20.GT.`201)`20GO`20TO`2020
X`20`20`20`20`20`20RETURN
X`20`20`20`20`20`20END
XC
XC---END`20ISORTI
XC
X`20`20`20`20`20`20SUBROUTINE`20ISORTI8`20(`20ARRAY,`20NUM,`20INDX`20)
XC*
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20ISORT`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*
XC*`20`20`20`20`20AUTHOR`20:
XC*`20`20`20`20`20`20`20`20`20`20ART`20RAGOSTA
XC*`20`20`20`20`20`20`20`20`20`20MS`20219-3
XC*`20`20`20`20`20`20`20`20`20`20AMES`20RESEARCH`20CENTER
XC*`20`20`20`20`20`20`20`20`20`20MOFFETT`20FIELD,`20CALIF`2094035
XC*`20`20`20`20`20`20`20`20`20`20(415)`20604-5558
XC*
XC*`20`20`20`20`20PURPOSE`20:
XC*`20`20`20`20`20`20`20`20`20`20PRODUCE`20A`20SORTED`20INDEX`20POINTER`20ARRAY
V
XC*`20`20`20`20`20`20`20`20`20`20THE`20INPUT`20ARRAY`20IS`20SORTED`20AS`20WELL
V`20AS`20THE`20ARRAY
XC*`20`20`20`20`20`20`20`20`20`20'INDX'.`20THEREFORE,`20INDX`20CAN`20BE`20USED
V`20TO`20PRINT
XC*`20`20`20`20`20`20`20`20`20`20ANY`20NUMBER`20OF`20RELATED`20ARRAYS.
XC*
XC*
XC*`20`20`20`20`20METHODOLOGY`20:
XC*`20`20`20`20`20`20`20`20`20`20SHELLSORT
XC*
XC*`20`20`20`20`20INPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20NUM`20`20`20`20-`20NUMBER`20OF`20ELEMENTS`20IN
V`20ARRAY
XC*`20`20`20`20`20`20`20`20`20`20ARRAY`20`20-`20ARRAY`20TO`20BE`20SORTED
XC*
XC*`20`20`20`20`20OUTPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20INDX`20`20`20-`20INDEX`20ARRAY
XC*
XC*`20`20`20`20`20INTERNAL`20WORK`20AREAS`20:
XC*`20`20`20`20`20`20`20`20`20`20TEMPA`20-`20USED`20DURING`20SWAPS
XC*
XC*`20`20`20`20`20ASSUMPTIONS`20AND`20RESTRICTIONS`20:
XC*`20`20`20`20`20`20`20`20`20`20THE`20TYPE`20OF`20THE`20ARRAY`20'ARRAY'`20AND
V`20THE`20VARIABLE`20'TEMPA'
XC*`20`20`20`20`20`20`20`20`20`20MUST`20BE`20SET`20FOR`20EACH`20TYPE`20OF`20SOR
VT.`20`20FOR`20THIS`20PARTICULAR
XC*`20`20`20`20`20`20`20`20`20`20IMPLEMENTATION,`20THE`20ARRAY`20IS`20CHARACTER
V`20WITH`20LENGTH`20<=`20255.
XC*
XC*`20`20`20`20`20LANGUAGE`20AND`20COMPILER`20:
XC*`20`20`20`20`20`20`20`20`20`20ANSI`20FORTRAN`2077
XC*
XC*`20`20`20`20`20CHANGE`20HISTORY`20:
XC*`20`20`20`20`20`20`20`20`20`2003/12/84`20`20`20`20`20INITIAL`20VERSION
XC*
XC***********************************************************************
XC*
X`20`20`20`20`20`20DIMENSION`20INDX(num)
X`20`20`20`20`20`20INTEGER`20*8`20ARRAY(num)
X`20`20`20`20`20`20INTEGER`20*8`20TEMPI,`20tempa
X`20`20`20`20`20`20LOGICAL`20DONE
XC
X`20`20`20`20`20`20DO`2010`20I`20=`201,`20NUM
X`20`20`20`20`20`20`20`20`20INDX(I)`20=`20I
X10`20`20`20`20`20`20`20CONTINUE
X`20`20`20`20`20`20IF`20(NUM`20.LE.`201)`20RETURN
X`20`20`20`20`20`20JUMP`20=`20NUM
X20`20`20`20`20JUMP`20=`20JUMP`20/`202
X30`20`20`20`20DONE`20=`20.TRUE.
X`20`20`20`20`20`20NJ`20=`20NUM-JUMP
X`20`20`20`20`20`20DO`2040`20J`20=`201,`20NJ
X`20`20`20`20`20`20`20`20`20I`20=`20J`20+`20JUMP
X`20`20`20`20`20`20`20`20`20IF`20(ARRAY(J)`20.GT.`20ARRAY(I))THEN
X`20`20`20`20`20`20`20`20`20`20`20`20DONE`20=`20.FALSE.
X`20`20`20`20`20`20`20`20`20`20`20`20TEMPA`20=`20ARRAY(J)
X`20`20`20`20`20`20`20`20`20`20`20`20ARRAY(J)`20=`20ARRAY(I)
X`20`20`20`20`20`20`20`20`20`20`20`20ARRAY(I)`20=`20TEMPA
X`20`20`20`20`20`20`20`20`20`20`20`20TEMPI`20=`20INDX(J)
X`20`20`20`20`20`20`20`20`20`20`20`20INDX(J)`20=`20INDX(I)
X`20`20`20`20`20`20`20`20`20`20`20`20INDX(I)`20=`20TEMPI
X`20`20`20`20`20`20`20`20`20ENDIF
X40`20`20`20`20`20`20`20CONTINUE
X`20`20`20`20`20`20IF`20(.NOT.`20DONE)`20GO`20TO`2030
X`20`20`20`20`20`20IF`20(JUMP`20.GT.`201)`20GO`20TO`2020
X`20`20`20`20`20`20RETURN
X`20`20`20`20`20`20END
XC
XC---END`20ISORTI8
XC
Xcc`20`20`20`20`20`20`20`20.title`20`20length
Xcc;
Xcc;`20`20`20Author:`20`20Arthur`20E.`20Ragosta
Xcc;
Xcc;`20`20`20Return`20the`20true`20length`20of`20a`20string;`20i.e.,`20the`20lo
Vcation`20of`20the`20last
Xcc;`20`20`20non-blank`20character.`20`20Since`20FORTRAN's`20strings`20are`20no
Vn-dynamic,`20the
Xcc;`20`20`20function`20skips`20ONLY`20spaces`20(not`20NULs,`20control`20charac
Vters,`20etc.).
Xcc;
Xcc;`20`20`20`20`20`20LS`20=`20LENGTH(`20'A`20STRING`20`20`20`20`20'`20)`20`20
V`20!`20Note,`20LS`20is`208
Xcc;
Xcc`20`20`20`20`20`20`20`20.entry`20`20length,`5Em<>
Xcc
Xcc`20`20`20`20`20`20`20`20movl`20`20`20`204(ap),r1`20`20`20`20`20`20`20`20;loc
Vation`20of`20descriptor`20to`20r1
Xcc`20`20`20`20`20`20`20`20movzwl`20`20(r1),r0`20`20`20`20`20`20`20`20`20;lengt
Vh`20to`20r0
Xcc`20`20`20`20`20`20`20`20subl3`20`20`20#1,4(r1),r1`20`20`20`20`20;location`20
Vto`20r1
XccLOOP:`20`20`20cmpb`20`20`20`20(r1)`5Br0`5D,#32`20`20`20`20;space`20?
Xcc;
Xcc`20`20`20`20`20`20`20`20bneq`20`20`20`20done
Xcc;
Xcc;`09beql`09next`09`09;replace`20previous`20line`20with`20these
Xcc;`09cmpb`20`20`20`20(r1)`5Br0`5D,#09`20`20`20`20;to`20skip`20tabs`20too
Xcc;`20`20`20`20`20`20`20bneq`20`20`20`20done
Xcc;NEXT:
Xcc;
Xcc`20`20`20`20`20`20`20`20sobgtr`20`20r0,loop`20`20`20`20`20`20`20`20`20;check
V`20for`20zero`20length`20string
XccDONE:`20`20`20ret
Xcc`20`20`20`20`20`20`20`20.end
Xcc;
Xcc;`20`20Portable`20FORTRAN`20version
Xcc;
X`20`20`20`20`20`20FUNCTION`20LENGTH`20(`20STRING`20)
Xc*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20*******************
V************
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20LENGTH`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*
XC*`20`20`20`20`20SUBPROGRAM`20:
XC*`20`20`20`20`20`20`20`20`20`20LENGTH
XC*
XC*`20`20`20`20`20AUTHOR`20:
XC*`20`20`20`20`20`20`20`20`20`20ART`20RAGOSTA
XC*`20`20`20`20`20`20`20`20`20`20MS`20219-3
XC*`20`20`20`20`20`20`20`20`20`20AMES`20RESEARCH`20CENTER
XC*`20`20`20`20`20`20`20`20`20`20MOFFETT`20FIELD,`20CA`20`2094035
XC*`20`20`20`20`20`20`20`20`20`20(415)`20604-5558
XC*
XC*`20`20`20`20`20PURPOSE`20:
XC*`20`20`20`20`20`20`20`20`20`20RETURNS`20THE`20LENGTH`20OF`20A`20STRING`20WHE
VRE`20LENGTH`20IS`20DEFINED
XC*`20`20`20`20`20`20`20`20`20`20TO`20BE`20THE`20LOCATION`20OF`20THE`20LAST`20N
VON-BLANK`20CHARACTER
XC*`20`20`20`20`20`20`20`20`20`20IN`20THE`20STRING.`20`20RETURNS`200`20FOR`20AN
V`20EMPTY`20STRING.
XC*`20`20`20`20`20`20`20`20`20`20NOTE:`20THIS`20ROUTINE`20IS`20REPLACED`20BY`20
VA`20MACRO`20ROUTINE`20IN`20MERLIB.
XC*
XC*`20`20`20`20`20INPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20STRING`20-`20THE`20STRING`20TO`20BE`20CHECKED
V
XC*
XC*`20`20`20`20`20OUTPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20LENGTH`20-`20THE`20LENGTH`20OF`20THE`20STRING
V
XC*
XC*`20`20`20`20`20LANGUAGE`20AND`20COMPILER`20:
XC*`20`20`20`20`20`20`20`20`20`20ANSI`20FORTRAN`2077
XC*
XC*`20`20`20`20`20VERSION`20AND`20DATE`20:
XC*`20`20`20`20`20`20`20`20`20`20VERSION`20I.0`20`20`20`20`2015-OCT-84
XC*
XC*`20`20`20`20`20CHANGE`20HISTORY`20:
XC*`20`20`20`20`20`20`20`20`20`2015-OCT-84`20`20`20`20INITIAL`20VERSION
XC*
XC***********************************************************************
XC*
X`20`20`20`20`20`20CHARACTER`20*(*)`20STRING
XC
X`20`20`20`20`20`20LENGTH`20=`20LEN(STRING)
X10`20`20`20`20IF`20(STRING(LENGTH:LENGTH)`20.EQ.`20'`20')`20THEN
X`20`20`20`20`20`20`20`20`20LENGTH`20=`20LENGTH-1
X`20`20`20`20`20`20`20`20`20IF`20(`20LENGTH`20.GT.`200`20)GO`20TO`2010
X`20`20`20`20`20`20ENDIF
X`20`20`20`20`20`20RETURN
X`20`20`20`20`20`20END
XC
XC---END`20LENGTH
XC
X`20`20`20`20`20`20INTEGER`20FUNCTION`20PARSE`20(SPEC,`20DEFAULT,`20PART,`20OUT
V)
XC*
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20PARSE`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**********************
V*********
XC*
XC*`20`20`20`20`20SUBPROGRAM`20:
XC*`20`20`20`20`20`20`20`20`20`20PARSE
XC*
XC*`20`20`20`20`20AUTHOR`20:
XC*`20`20`20`20`20`20`20`20`20`20Arthur`20E.`20Ragosta
XC*`20`20`20`20`20`20`20`20`20`20MS`20219-1
XC*`20`20`20`20`20`20`20`20`20`20NASA`20Ames`20Research`20Center
XC*`20`20`20`20`20`20`20`20`20`20Moffett`20Field,`20Ca.`20`2094035-1000
XC*`20`20`20`20`20`20`20`20`20`20(415)`20604-5558
XC*
XC*`20`20`20`20`20PURPOSE`20:
XC*`20`20`20`20`20`20`20`20`20`20PARSE`20A`20FILE`20SPECIFICATION`20(OR`20PART
V`20OF`20ONE)
XC*`20`20`20`20`20`20`20`20`20`20EMULATES`20THE`20LEXICAL`20FUNCTION`20F$PARSE
V
XC*
XC*`20`20`20`20`20INPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20SPEC`20`20`20`20-`20INPUT`20(PARTIAL)`20FILE
V`20SPEC
XC*`20`20`20`20`20`20`20`20`20`20DEFAULT`20-`20DEFAULT`20SPEC`20FOR`20MISSING
V`20PARTS`20(IF`20BLANK,`20USE
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20CURRENT`20
VNODE,`20ETC.)
XC*`20`20`20`20`20`20`20`20`20`20PART`20`20`20`20-`20THE`20PART`20WANTED:
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20'NODE',`20
V`20`20'DEVICE',`20`20'DIRECTORY',`20'NAME',
XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20'TYPE',`20
V`20`20'VERSION',`20'FULL',`20`20`20`20`20`20'LONGNAME'
XC*
XC*`20`20`20`20`20OUTPUT`20ARGUMENTS`20:
XC*`20`20`20`20`20`20`20`20`20`20OUT`20`20`20`20`20-`20THE`20PART`20REQUESTED
XC*
XC*`20`20`20`20`20SUBPROGRAM`20REFERENCES`20:
XC*`20`20`20`20`20`20`20`20`20`20TRANSL8,`20`20SYS$PARSE,`20`20EXIT,`20`20LIB$M
VOVC5
XC*
+-+-+-+-+-+-+-+-  END  OF PART 1 +-+-+-+-+-+-+-+-


