Annotation of researchv10dc/cmd/matlab/install, revision 1.1

1.1     ! root        1: 
        !             2: 
        !             3: 11/6/83
        !             4: 
        !             5: 
        !             6: 
        !             7: 
        !             8: 
        !             9: 
        !            10: 
        !            11:                     MATLAB Installation Guide
        !            12:                          November, 1983
        !            13: 
        !            14: 
        !            15:                            Cleve Moler
        !            16:                  Department of Computer Science
        !            17:                     University of New Mexico
        !            18: 
        !            19: 
        !            20: 
        !            21:      The MATLAB tape is usually in one of two formats --  a  UNIX
        !            22: "tar" tape, or a "generic" tape with the following parameters:
        !            23: 
        !            24:           9 track
        !            25:           1600 bits per inch
        !            26:           no label
        !            27:           80 characters per record
        !            28:           1600 characters per block
        !            29:           18 files in ASCII, followed by 18 files in EBCDIC
        !            30: 
        !            31:      There are 36 files on the generic tape.  The  names  of  the
        !            32: first 18, and their approximate sizes, are:
        !            33: 
        !            34:           1.  INSTALL       1100 lines
        !            35:           2.  MAT           3900 lines
        !            36:           3.  LIB           3339 lines
        !            37:           4.  HELPER.66       75 lines
        !            38:           5.  HELPER.77      120 lines
        !            39:           6.  HELP           750 lines
        !            40:           7.  SYS.UNIX       900 lines
        !            41:           8.  SYS.VMS        260 lines
        !            42:           9.  SYS.TSO        200 lines
        !            43:          10.  SYS.CMS        350 lines
        !            44:          11.  SYS.DEC10      250 lines
        !            45:          12.  SYS.CDC        200 lines
        !            46:          13.  SYS.PRIME      350 lines
        !            47:          14.  DOC           3960 lines
        !            48:          15.  DEMO            21 lines
        !            49:          16.  DOC.NROFF     3250 lines
        !            50:          17.  MAT.SNGL      3850 lines
        !            51:          18.  LIB.SNGL      3339 lines
        !            52: 
        !            53: where a line is one 80 character record.
        !            54: 
        !            55:      The first 18 files are  in  the  ASCII  character  set.  The
        !            56: remaining 18 files are copies of the first 18 in EBCDIC.
        !            57: 
        !            58:      INSTALL is this document.  You can skip over it if you  have
        !            59: this hard copy.
        !            60: 
        !            61: 
        !            62: 
        !            63: 
        !            64: 
        !            65: 
        !            66: 
        !            67: 
        !            68: 
        !            69: MATLAB Installation, page 2
        !            70: 
        !            71: 
        !            72: 
        !            73:      MAT, LIB, one of the versions  of  HELPER  and  one  of  the
        !            74: versions  of SYS together constitute the complete source code for
        !            75: the double precision version of MATLAB.
        !            76: 
        !            77:      The subroutines in MAT make up the parser  and  interpreter.
        !            78: They  include  a  COMMON statement which can be changed to change
        !            79: the amount of memory allocated to variables.
        !            80: 
        !            81:      The subroutines in LIB  include  modified  versions  of  the
        !            82: necessary  routines from LINPACK, EISPACK and the BLAS.  These do
        !            83: not contain any COMMON statements and do not have to  be  changed
        !            84: if the size of the stack is changed.
        !            85: 
        !            86:      There are two  versions  of  HELPER,  the  subroutine  which
        !            87: manages  the  help facility.  The version in HELPER.66 is written
        !            88: in Fortran 66 and uses sequential i/o. The version  in  HELPER.77
        !            89: is  written in Fortran 77 and uses character variables and direct
        !            90: access i/o. If your  system  supports  both  versions,  you  will
        !            91: probably  want  to  choose  the direct access one -- it should be
        !            92: much faster. If you choose the direct access  version,  you  will
        !            93: have  to  run a preprocessor named HELPSET, which is also in file
        !            94: HELPER.77.
        !            95: 
        !            96:      HELP is the source text for the help facility.  It  is  read
        !            97: by  the  sequential version of HELPER, or preprocessed by HELPSET
        !            98: into two files which are then read by the direct  access  version
        !            99: of  HELPER.   HELP  is also included as an appendix in the User's
        !           100: Guide.
        !           101: 
        !           102:      The subroutines in one of the versions of SYS may have to be
        !           103: modified for your particular operating system.  They involve file
        !           104: access and floating point word format.  I have included  versions
        !           105: that  should  work  on several different operating systems.  Pick
        !           106: the version that is closest to  your  own  system  and  make  any
        !           107: changes you need.  There are no machine dependent constants.
        !           108: 
        !           109:      DOC is a report entitled "MATLAB Users' Guide".   It  should
        !           110: be printed on a nice printer with upper and lower case; there are
        !           111: 66 lines per page.  Make as many copies as  you  need,  or  order
        !           112: copies from us at New Mexico.
        !           113: 
        !           114:      DEMO  contains  a  demonstration  exec  file  which  can  be
        !           115: accessed by the exec command in MATLAB. On most systems, all that
        !           116: is required is EXEC('DEMO') or EXEC('DEMO',7).  On some  systems,
        !           117: like  TSO  and  NOS,  it will be necessary to attach file DEMO to
        !           118: unit 2 and then EXEC(2) or EXEC(2,7).
        !           119: 
        !           120:      DOC.NROFF is the input to the UNIX  text  processing  system
        !           121: that  was used to produce DOC.  This may be useful if you want to
        !           122: print the users' guide in a different format.
        !           123: 
        !           124:      MAT.SNGL and LIB.SNGL are the single precision  versions  of
        !           125: MAT  and LIB.  It is suggested that these be used only on systems
        !           126: 
        !           127: 
        !           128: 
        !           129: 
        !           130: 
        !           131: 
        !           132: 
        !           133: 
        !           134: 
        !           135: MATLAB Installation, page 3
        !           136: 
        !           137: 
        !           138: 
        !           139: with long  words  (48  bit  floating  point  fraction)  or  small
        !           140: memories.
        !           141: 
        !           142:      The first thing to worry about is the character set. The use
        !           143: of an upper-lower case character set is highly desirable, but not
        !           144: essential.  Read the tape and look at the first 50 or so lines of
        !           145: MAT.  This  is  the  subroutine  MATLAB,  a  listing  of which is
        !           146: included in this document. Check the comments near the  beginning
        !           147: to  see  if  the special characters are ok.  The ones we have had
        !           148: trouble with include:
        !           149:         SEMI ;   BSLASH \   COLON :   LESS <   GREAT >
        !           150: Any characters which are not ok should be changed in the  comment
        !           151: and  in the data statement which follows. The alternate character
        !           152: set includes the lower case letters as well  as  substitutes  for
        !           153: some of the special characters, such as \ and :, which are not on
        !           154: some terminals.  Do  not  worry  too  much  about  the  alternate
        !           155: character  set  now.   These data statements in subroutine MATLAB
        !           156: are  the  only  place  in  the  source  code  where  the  special
        !           157: characters  occur.   (If  you  want to get fancy, there is a data
        !           158: statement involving BEL in subroutine ERROR near the end of  file
        !           159: MAT.   Change  1H-blank  to  1H-control G to get your terminal to
        !           160: ring its bell for any error.)
        !           161: 
        !           162:      The files DOC and  HELP  are  full  of  special  characters,
        !           163: including
        !           164:           <   >   [   ]   :   ;   \   |
        !           165: If they are not ok, I hope it is not too difficult  to  fix  them
        !           166: up.
        !           167: 
        !           168:      I have used several FORTRAN  constructions  which  are  only
        !           169: semi-standard, and which may have to be changed for some systems:
        !           170:   Single quote (') in FORMATS instead of a tribute to Hollerith.
        !           171:   Entire arrays initialized in DATA statements.
        !           172:   Use of END= in READ statements.
        !           173: I have not asked PFORT to tell me what else is non-standard.
        !           174: 
        !           175:      Some interactive FORTRAN systems use column 1  for  carriage
        !           176: control and others don't.  If your system does not, edit file MAT
        !           177: and delete all "1X," .  There are 131 occurrences.
        !           178: 
        !           179:      The main program in file SYS simply  calls  MATLAB.  It  may
        !           180: have  to  be  modified  to  control the printing of underflow and
        !           181: overflow  messages.   The  ground  rules  are:   Underflows   are
        !           182: possible,  but  are  harmless  if  they  are quietly set to zero.
        !           183: Overflows are error conditions.  It would  be  nice  to  print  a
        !           184: message and continue.
        !           185: 
        !           186:      A listing of a typical version of SYS, using some Fortran 77
        !           187: for  clarity,  is included in this document.  I hope it is fairly
        !           188: easy to see what the various subroutines do and how they have  to
        !           189: be  revised  for  your  system. Please send me copies of versions
        !           190: appropriate for your system.
        !           191: 
        !           192: 
        !           193: 
        !           194: 
        !           195: 
        !           196: 
        !           197: 
        !           198: 
        !           199: 
        !           200: 
        !           201: MATLAB Installation, page 4
        !           202: 
        !           203: 
        !           204: 
        !           205:      The amount of memory required can be  altered  by  a  global
        !           206: text  edit  on  MAT which changes the matrix element stack length
        !           207: from 5005 to something else.  Be sure to get the statement
        !           208:           VSIZE = 5005
        !           209: in the subroutine MATLAB.  With this setting of the stack length,
        !           210: MATLAB  requires  about  a 300K byte region on an IBM system. The
        !           211: length has to be reduced somewhat to get MATLAB to fit into a 64K
        !           212: word  region on a CDC system.  Since each matrix element occupies
        !           213: two double or single precision words, an increase of 1000 in  the
        !           214: stack length requires an additional 16K bytes or 2000 words.
        !           215: 
        !           216:      It is possible to  get  by  with  less  memory  if  you  use
        !           217: overlays.  The simplest way to do this is the following.
        !           218: 
        !           219:                    ROOT
        !           220:                      |
        !           221:       -------------------------------
        !           222:       |     |     |     |     |     |
        !           223:      S0    S1    S2    S3    S4    S5
        !           224: 
        !           225: Only ROOT plus one of the segments  S0  through  S5  need  be  in
        !           226: memory at any one time.  The segments do not call each other, but
        !           227: return to the root.  All the relevant calls are near the  end  of
        !           228: subroutine  MATLAB  in  the  root.  There are five labeled COMMON
        !           229: blocks which are shared by the root and all  the  segments.   The
        !           230: various segments consist of:
        !           231: 
        !           232:       ROOT:
        !           233:         MAIN        MATLAB      STACK1
        !           234:         PRINT       PRNTID      FUNS
        !           235:         STACKP      ERROR       FILES
        !           236:         HELPER      PYTHAG      FORMZ
        !           237:         FLOP        PROMPT
        !           238:         Plus everything in file LIB not mentioned below.
        !           239: 
        !           240:       S0:
        !           241:         PARSE       COMAND      CLAUSE
        !           242:         EXPR        TERM        FACTOR
        !           243:         STACKG      STACK2      GETSYM
        !           244:         GETLIN      GETCH       GETVAL
        !           245:         EDIT        XCHAR
        !           246: 
        !           247:       S1:
        !           248:         MATFN1      WGECO       WGEFA
        !           249:         WGESL       WGEDI       WPOFA
        !           250:         RREF        HILBER
        !           251: 
        !           252:       S2:
        !           253:         MATFN2      CORTH       COMQR3
        !           254:         HTRIDI      HTRIBK      IMTQL2
        !           255: 
        !           256:       S3:
        !           257:         MATFN3      WSVDC
        !           258: 
        !           259: 
        !           260: 
        !           261: 
        !           262: 
        !           263: 
        !           264: 
        !           265: 
        !           266: 
        !           267: MATLAB Installation, page 5
        !           268: 
        !           269: 
        !           270: 
        !           271:       S4:
        !           272:         MATFN4      WQRDC       WQRSL
        !           273: 
        !           274:       S5:
        !           275:         MATFN5      MATFN6      MAGIC
        !           276:         SAVLOD      RAT         USER
        !           277:         PLOT
        !           278: 
        !           279: If you have enough room, combine ROOT and S0.   With  more  room,
        !           280: combine  ROOT,  S0  and  S5.   If you use some overlay structure,
        !           281: please send me a description of how it is done on your system.
        !           282: 
        !           283:      In  case  anybody  needs  to  know,  here  are  the  changes
        !           284: necessary  to  convert from double to single precision.  They can
        !           285: all be safely accomplished by simple global text changes in  MAT,
        !           286: LIB and an appropriate version of SYS.
        !           287: 
        !           288:       DOUBLE PRECISION   REAL
        !           289:       DOUBLE-            REAL-
        !           290:       DSQRT              SQRT
        !           291:       DLOG               ALOG
        !           292:       DEXP               EXP
        !           293:       DSIN               SIN
        !           294:       DCOS               COS
        !           295:       DATAN              ATAN
        !           296:       DABS               ABS
        !           297:       DMAX1              AMAX1
        !           298:       DMIN1              AMIN1
        !           299:       IDINT              IFIX
        !           300:       DSIGN              SIGN
        !           301:       DMOD               AMOD
        !           302:       D0                 E0
        !           303:       D1                 E1
        !           304:       D2                 E2
        !           305:       D9                 E9
        !           306: 
        !           307: 
        !           308:      Here are some additional comments that apply  to  individual
        !           309: systems.
        !           310: 
        !           311: 
        !           312: VAX UNIX.
        !           313: 
        !           314:      If you have read the "tar" format tape, see file README  and
        !           315: the makefile.  Ignore the rest of this section.
        !           316: 
        !           317:      It is essential to change the single backslash \ in the data
        !           318: statement  near  the  beginning of file MAT to a double backslash
        !           319: \\.  If this is not done, the F77 compiler  produces  an  obscure
        !           320: error message about "dataalpha" being too long.
        !           321: 
        !           322:      Increase the size of the stack  to  take  advantage  of  the
        !           323: virtual  memory.  Eliminate  all the "1X," in formats. Change the
        !           324: 
        !           325: 
        !           326: 
        !           327: 
        !           328: 
        !           329: 
        !           330: 
        !           331: 
        !           332: 
        !           333: MATLAB Installation, page 6
        !           334: 
        !           335: 
        !           336: 
        !           337: statement CASE = 0 in MATLAB to CASE = 1 to get lower  case  file
        !           338: names.   All  these  changes  can be accomplished by applying the
        !           339: following ed or vi commands to file MAT.
        !           340: 
        !           341:         1,$s/\/\\/g
        !           342:         1,$s/5005/50005/g
        !           343:         1,$s/1X,/0X,/g
        !           344:         1,$s/CASE = 0/CASE = 1/
        !           345:         1,$s/BEL/1H /BEL/1H^G/
        !           346:         1,$s/LCT(2) = 25/LCT(2) = 25000/
        !           347: 
        !           348:      The compilation should suppress warnings about  initializing
        !           349: non-character   variables  with  Hollerith  and  should  use  the
        !           350: Berkeley version of  the  i/o  support  routines.   This  can  be
        !           351: accomplished with:
        !           352: 
        !           353:       % f77 -w66 mat.f lib.f helper.f sys.f -lI77uc
        !           354: 
        !           355:      Gary Klimowicz and Lee Ward of UNM have developed a overflow
        !           356: fault  handler  for use with VAX UNIX.  A copy of their C program
        !           357: in included in SYS.UNIX and on the "tar" tape.
        !           358: 
        !           359: 
        !           360: 
        !           361: VAX VMS
        !           362: 
        !           363:      SYS.VMS contains an extra subroutine for proper handling  of
        !           364: floating point overflow.  The main program includes a call to the
        !           365: system which initializes this handling.
        !           366: 
        !           367:      Integer overflow is expected in the the print routine and in
        !           368: random  number  generator.   The integer overflow messages can be
        !           369: turned off by
        !           370: 
        !           371:      FORTRAN/NOCHECK  MAT.FOR,LIB.FOR
        !           372: 
        !           373: 
        !           374: 
        !           375: IBM (TSO)
        !           376: (Thanks to Jack Dongarra at Argonne.)
        !           377: 
        !           378:      The main program in SYS.TSO includes the  appropriate  calls
        !           379: to the IBM system utility ERRSET that turns off verbose underflow
        !           380: and overflow messages.
        !           381: 
        !           382:      Unfortunately, TSO does not have  a  mechanism  for  opening
        !           383: files during execution.  It is necessary to use file numbers with
        !           384: SAVE, LOAD and EXEC.
        !           385: 
        !           386:      We have to specify LRECL=80 for terminal input on unit 5  to
        !           387: get  blanks  added to input lines.  It is a good idea to set up a
        !           388: clist something like the following.
        !           389: 
        !           390: 
        !           391: 
        !           392: 
        !           393: 
        !           394: 
        !           395: 
        !           396: 
        !           397: 
        !           398: 
        !           399: MATLAB Installation, page 7
        !           400: 
        !           401: 
        !           402: 
        !           403:       FREE FILE(FT05F001 FT06F001 FT09F001 FT01F001 FT02F001)
        !           404:       FREE ATTRLIST(AT80)
        !           405:       ATTR  AT80 LRECL(80) BLKSIZE(80) RECFM(F)
        !           406:       ALLOC FILE(FT05F001) DA(*) USING(AT80)
        !           407:       ALLOC FILE(FT06F001) DA(*)
        !           408:       ALLOC FILE(FT09F001) DA('MATLAB.HELP.DATA')
        !           409:       ALLOC FILE(FT01F001) DA(SAVLOD.DATA)
        !           410:       ALLOC FILE(FT02F001) DA('MATLAB.DEMO.DATA')
        !           411:       CALL 'MATLAB.LOAD(MATMOD)'
        !           412: 
        !           413: With this arrangement, the DEMO file can be executed by  exec(2).
        !           414: 
        !           415: 
        !           416: 
        !           417: IBM (CMS)
        !           418: (Thanks to Jack Dongarra at Argonne and David Gay at MIT.)
        !           419: 
        !           420:      Entering a blank line  in  response  to  the  MATLAB  prompt
        !           421: generates  an  end-of-file  from  terminal  input  (Fortran  unit
        !           422: FT05F001). This results in a call from GETLIN to FILES with LUNIT
        !           423: =  -5.  The terminal is "rewound" and control eventually returned
        !           424: to PARSE which prints another prompt.  I hope this works.
        !           425: 
        !           426:      An assembly language routine used to attach files with names
        !           427: generated  by  MATLAB  to  Fortran  unit  numbers  is included in
        !           428: SYS.CMS.
        !           429: 
        !           430: 
        !           431: 
        !           432: DEC-10
        !           433: (Thanks to Stan Eisenstat and Craig Douglas at Yale.)
        !           434: 
        !           435:      The  hyperbolic  trig  functions  SINH  and  COSH  are   not
        !           436: available on the DEC system.  Fortran subroutines are included in
        !           437: the SYS.DEC10 file.
        !           438: 
        !           439: 
        !           440: 
        !           441: PRIME 400
        !           442: (Thanks to Richard Franke and Drexel University.)
        !           443: 
        !           444:      The terminal is  Fortran  I/O  unit  number  1.   Subroutine
        !           445: MATLAB has to be changed so that
        !           446:       RTE = 5  becomes  RTE = 1
        !           447:       WTE = 6  becomes  WTE = 1
        !           448: Subroutine MATFN5 has to be changed so that
        !           449:       WIO = 1  becomes  WIO = 8
        !           450:       LUNIT = 1  becomes  LUNIT = 8  (in two places).
        !           451: 
        !           452: 
        !           453: 
        !           454: CDC
        !           455: 
        !           456: 
        !           457: 
        !           458: 
        !           459: 
        !           460: 
        !           461: 
        !           462: 
        !           463: 
        !           464: 
        !           465: MATLAB Installation, page 8
        !           466: 
        !           467: 
        !           468: 
        !           469:      CDC systems offer exciting challenges as far as  portability
        !           470: is  concerned.  The first question is: which character set should
        !           471: be used?  An easy  approach  is  to  convert  everything  to  the
        !           472: venerable  6-bit  character  set.   Even so, you may have trouble
        !           473: with the colon, which is a pretty important MATLAB character.  It
        !           474: is  far  more  fun to try to use upper and lower case and all the
        !           475: special symbols.  I have succeeded in doing this with  the  6/12-
        !           476: bit  setup  used  on  the NOS system at Sandia, but have given up
        !           477: with the 6/18-bit coding on LTSS at Los Alamos.
        !           478: 
        !           479:      In  "ASCII"  mode  on  NOS,  lower   case   characters   are
        !           480: represented  by  12 bits -- the first 6 bits are octal 76 and the
        !           481: last 6 are the corresponding upper case character.  They count as
        !           482: two  characters.   So, the following changes are required in file
        !           483: MAT.  Several of the mixed  case  strings  in  FORMAT  statements
        !           484: extend  beyond column 72.  You might as well convert these to all
        !           485: upper case.  All the 80A1's  in  FORMATS  should  be  changed  to
        !           486: 132A1's  and all the DATA statements initializing LRECL should be
        !           487: changed from  80  to  132.   The  DATA  statement  for  ALPHB  in
        !           488: subroutine   MATLAB  can  be  changed  to  have  all  upper  case
        !           489: alphabetic characters because subroutine  XCHAR  will  catch  the
        !           490: prefix octal 76.
        !           491: 
        !           492:      An important change involves our  friend  the  colon,  which
        !           493: becomes  a  12-bit  octal 7404.  In the DATA statement for ALPHA,
        !           494: make the element just before 1H+ into a 1H(percent  sign).   And,
        !           495: in  the  DATA statement for ALPHB, make the corresponding element
        !           496: into a 2H(colon).  Then read the comments in subroutine XCHAR  in
        !           497: file  SYS.CDC  and  make  sure that the DATA statements there are
        !           498: correct.
        !           499: 
        !           500:      The FTN5 compiler should take MATLAB pretty much is  it  is.
        !           501: The  older  FTN  compiler  requires  two  familiar changes to the
        !           502: entire source code.  First, the END= in the READ statements  have
        !           503: to be replaced by IF (EOF) GO TO ... .  Second, the single quotes
        !           504: in FORMATS have to be replaced with asterisks.
        !           505: 
        !           506: 
        !           507: 
        !           508: Good luck.  Please let me know what difficulties  you  have,  and
        !           509: what I have left out of this guide.  You can call me at:
        !           510:          505-268-8631  (home)
        !           511:          505-277-3112  (office)
        !           512: 
        !           513: ------------
        !           514: 
        !           515:      The support of the National Science Foundation and  the  use
        !           516: of facilities at Argonne National Laboratory, Los Alamos National
        !           517: Laboratory and Stanford Linear Accelerator Center  is  gratefully
        !           518: acknowledged.   So  is the assistance of the many people who have
        !           519: installed early versions of MATLAB.
        !           520: 
        !           521: 
        !           522: 
        !           523: 
        !           524: 
        !           525: 
        !           526: 
        !           527: 
        !           528: 
        !           529: 
        !           530: 
        !           531: MATLAB Installation, page 9
        !           532: 
        !           533: 
        !           534: 
        !           535: Contents of file MAT:
        !           536: 
        !           537:       SUBROUTINE MATLAB(INIT)
        !           538:       SUBROUTINE PARSE
        !           539:       SUBROUTINE COMAND(ID)
        !           540:       SUBROUTINE CLAUSE
        !           541:       SUBROUTINE EXPR
        !           542:       SUBROUTINE TERM
        !           543:       SUBROUTINE FACTOR
        !           544:       SUBROUTINE FUNS(ID)
        !           545:       SUBROUTINE STACKP(ID)
        !           546:       SUBROUTINE STACKG(ID)
        !           547:       SUBROUTINE STACK1(OP)
        !           548:       SUBROUTINE STACK2(OP)
        !           549:       SUBROUTINE PRINT(ID,K)
        !           550:       SUBROUTINE PRNTID(ID,ARGCNT)
        !           551:       SUBROUTINE GETSYM
        !           552:       SUBROUTINE GETLIN
        !           553:       SUBROUTINE GETCH
        !           554:       SUBROUTINE GETVAL(S)
        !           555:       SUBROUTINE MATFN1
        !           556:       SUBROUTINE MATFN2
        !           557:       SUBROUTINE MATFN3
        !           558:       SUBROUTINE MATFN4
        !           559:       SUBROUTINE MATFN5
        !           560:       SUBROUTINE MATFN6
        !           561:       SUBROUTINE ERROR(N)
        !           562:       DOUBLE PRECISION FUNCTION PYTHAG(A,B)
        !           563:       SUBROUTINE RAT(X,LEN,MAXD,D)
        !           564: 
        !           565: Contents of file HELPER.66:
        !           566: 
        !           567:       SUBROUTINE HELPER(H) -- Sequential version
        !           568: 
        !           569: Contents of file HELPER.77:
        !           570: 
        !           571:       PROGRAM HLPSET       -- Direct access setup
        !           572:       SUBROUTINE HELPER(H) -- Direct access version
        !           573: 
        !           574: Contents of file SYS:
        !           575: 
        !           576:       PROGRAM MAIN
        !           577:       SUBROUTINE FILES(LUNIT,NAME)
        !           578:       SUBROUTINE SAVLOD(LUNIT,ID,M,N,IMG,JOB,XREAL,XIMAG)
        !           579:       SUBROUTINE FORMZ(LUNIT,X,Y)
        !           580:       DOUBLE PRECISION FUNCTION FLOP(X)
        !           581:       SUBROUTINE XCHAR(BUF,K)
        !           582:       SUBROUTINE USER(A,M,N,S,T)
        !           583:       SUBROUTINE PROMPT(PAUSE)
        !           584:       SUBROUTINE PLOT(LUNIT,X,Y,N,P,K,BUF)
        !           585:       SUBROUTINE EDIT(BUF,N)
        !           586: 
        !           587: 
        !           588: 
        !           589: 
        !           590: 
        !           591: 
        !           592: 
        !           593: 
        !           594: 
        !           595: 
        !           596: 
        !           597: MATLAB Installation, page 10
        !           598: 
        !           599: 
        !           600: 
        !           601: Contents of file LIB:
        !           602: 
        !           603:       SUBROUTINE WGECO(AR,AI,LDA,N,IPVT,RCOND,ZR,ZI)
        !           604:       SUBROUTINE WGEFA(AR,AI,LDA,N,IPVT,INFO)
        !           605:       SUBROUTINE WGESL(AR,AI,LDA,N,IPVT,BR,BI,JOB)
        !           606:       SUBROUTINE WGEDI(AR,AI,LDA,N,IPVT,DETR,DETI,WORKR,WORKI,JOB)
        !           607:       SUBROUTINE WPOFA(AR,AI,LDA,N,INFO)
        !           608:       SUBROUTINE RREF(AR,AI,LDA,M,N,EPS)
        !           609:       SUBROUTINE HILBER(A,LDA,N)
        !           610:       SUBROUTINE HTRIDI(NM,N,AR,AI,D,E,E2,TAU)
        !           611:       SUBROUTINE HTRIBK(NM,N,AR,AI,TAU,M,ZR,ZI)
        !           612:       SUBROUTINE IMTQL2(NM,N,D,E,Z,IERR,JOB)
        !           613:       SUBROUTINE CORTH(NM,N,LOW,IGH,AR,AI,ORTR,ORTI)
        !           614:       SUBROUTINE COMQR3(NM,N,LOW,IGH,ORTR,ORTI,HR,HI,WR,WI,ZR,ZI,IERR
        !           615:       SUBROUTINE WSVDC(XR,XI,LDX,N,P,SR,SI,ER,EI,UR,UI,LDU,VR,VI,LDV,
        !           616:       SUBROUTINE WQRDC(XR,XI,LDX,N,P,QRAUXR,QRAUXI,JPVT,WORKR,WORKI,
        !           617:       SUBROUTINE WQRSL(XR,XI,LDX,N,K,QRAUXR,QRAUXI,YR,YI,QYR,QYI,QTYR,
        !           618:       SUBROUTINE MAGIC(A,LDA,N)
        !           619:       SUBROUTINE BASE(X,B,EPS,S,N)
        !           620:       DOUBLE PRECISION FUNCTION URAND(IY)
        !           621:       SUBROUTINE WMUL(AR,AI,BR,BI,CR,CI)
        !           622:       SUBROUTINE WDIV(AR,AI,BR,BI,CR,CI)
        !           623:       SUBROUTINE WSIGN(XR,XI,YR,YI,ZR,ZI)
        !           624:       SUBROUTINE WSQRT(XR,XI,YR,YI)
        !           625:       SUBROUTINE WLOG(XR,XI,YR,YI)
        !           626:       SUBROUTINE WATAN(XR,XI,YR,YI)
        !           627:       DOUBLE PRECISION FUNCTION WNRM2(N,XR,XI,INCX)
        !           628:       DOUBLE PRECISION FUNCTION WASUM(N,XR,XI,INCX)
        !           629:       INTEGER FUNCTION IWAMAX(N,XR,XI,INCX)
        !           630:       SUBROUTINE WRSCAL(N,S,XR,XI,INCX)
        !           631:       SUBROUTINE WSCAL(N,SR,SI,XR,XI,INCX)
        !           632:       SUBROUTINE WAXPY(N,SR,SI,XR,XI,INCX,YR,YI,INCY)
        !           633:       DOUBLE PRECISION FUNCTION WDOTUR(N,XR,XI,INCX,YR,YI,INCY)
        !           634:       DOUBLE PRECISION FUNCTION WDOTUI(N,XR,XI,INCX,YR,YI,INCY)
        !           635:       DOUBLE PRECISION FUNCTION WDOTCR(N,XR,XI,INCX,YR,YI,INCY)
        !           636:       DOUBLE PRECISION FUNCTION WDOTCI(N,XR,XI,INCX,YR,YI,INCY)
        !           637:       SUBROUTINE WCOPY(N,XR,XI,INCX,YR,YI,INCY)
        !           638:       SUBROUTINE WSET(N,XR,XI,YR,YI,INCY)
        !           639:       SUBROUTINE WSWAP(N,XR,XI,INCX,YR,YI,INCY)
        !           640:       SUBROUTINE RSET(N,DX,DY,INCY)
        !           641:       SUBROUTINE RSWAP(N,X,INCX,Y,INCY)
        !           642:       SUBROUTINE RROT(N,DX,INCX,DY,INCY,C,S)
        !           643:       SUBROUTINE RROTG(DA,DB,C,S)
        !           644:       LOGICAL FUNCTION EQID(X,Y)
        !           645:       SUBROUTINE PUTID(X,Y)
        !           646:       DOUBLE PRECISION FUNCTION ROUND(X)
        !           647: 
        !           648: 
        !           649: 
        !           650: 
        !           651: 
        !           652: 
        !           653: 
        !           654: 
        !           655: 
        !           656: 
        !           657: 
        !           658: 
        !           659: 
        !           660: 
        !           661: 
        !           662: 
        !           663: MATLAB Installation, page 11
        !           664: 
        !           665: 
        !           666: 
        !           667: First subroutine in file MAT:
        !           668: 
        !           669:       SUBROUTINE MATLAB(INIT)
        !           670: C     INIT = 0 FOR ORDINARY FIRST ENTRY
        !           671: C          = POSITIVE FOR SUBSEQUENT ENTRIES
        !           672: C          = NEGATIVE FOR SILENT INITIALIZATION (SEE MATZ)
        !           673: C
        !           674:       DOUBLE PRECISION STKR(5005),STKI(5005)
        !           675:       INTEGER IDSTK(4,48),LSTK(48),MSTK(48),NSTK(48),VSIZE,LSIZE,BOT,TOP
        !           676:       INTEGER ALFA(52),ALFB(52),ALFL,CASE
        !           677:       INTEGER IDS(4,32),PSTK(32),RSTK(32),PSIZE,PT,PTZ
        !           678:       INTEGER DDT,ERR,FMT,LCT(4),LIN(1024),LPT(6),RIO,WIO,RTE,WTE,HIO
        !           679:       INTEGER SYM,SYN(4),BUF(256),CHAR,FLP(2),FIN,FUN,LHS,RHS,RAN(2)
        !           680:       COMMON /VSTK/ STKR,STKI,IDSTK,LSTK,MSTK,NSTK,VSIZE,LSIZE,BOT,TOP
        !           681:       COMMON /ALFS/ ALFA,ALFB,ALFL,CASE
        !           682:       COMMON /RECU/ IDS,PSTK,RSTK,PSIZE,PT,PTZ
        !           683:       COMMON /IOP/ DDT,ERR,FMT,LCT,LIN,LPT,RIO,WIO,RTE,WTE,HIO
        !           684:       COMMON /COM/ SYM,SYN,BUF,CHAR,FLP,FIN,FUN,LHS,RHS,RAN
        !           685: C
        !           686:       DOUBLE PRECISION S,T
        !           687:       INTEGER EPS(4),FLOPS(4),EYE(4),RAND(4)
        !           688: C
        !           689: C     CHARACTER SET
        !           690: C            0       10       20       30       40       50
        !           691: C
        !           692: C     0      0        A        K        U   COLON  :  LESS   <
        !           693: C     1      1        B        L        V   PLUS   +  GREAT  >
        !           694: C     2      2        C        M        W   MINUS  -
        !           695: C     3      3        D        N        X   STAR   *
        !           696: C     4      4        E        O        Y   SLASH  /
        !           697: C     5      5        F        P        Z   BSLASH \
        !           698: C     6      6        G        Q  BLANK     EQUAL  =
        !           699: C     7      7        H        R  LPAREN (  DOT    .
        !           700: C     8      8        I        S  RPAREN )  COMMA  ,
        !           701: C     9      9        J        T  SEMI   ;  QUOTE  '
        !           702: C
        !           703:       INTEGER ALPHA(52),ALPHB(52)
        !           704:       DATA ALPHA /1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,
        !           705:      $    1HA,1HB,1HC,1HD,1HE,1HF,1HG,1HH,1HI,1HJ,
        !           706:      $    1HK,1HL,1HM,1HN,1HO,1HP,1HQ,1HR,1HS,1HT,
        !           707:      $    1HU,1HV,1HW,1HX,1HY,1HZ,1H ,1H(,1H),1H;,
        !           708:      $    1H:,1H+,1H-,1H*,1H/,1H\,1H=,1H.,1H,,1H',
        !           709:      $    1H<,1H>/
        !           710: C
        !           711: C     ALTERNATE CHARACTER SET
        !           712: C
        !           713:       DATA ALPHB /1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,
        !           714:      $    1Ha,1Hb,1Hc,1Hd,1He,1Hf,1Hg,1Hh,1Hi,1Hj,
        !           715:      $    1Hk,1Hl,1Hm,1Hn,1Ho,1Hp,1Hq,1Hr,1Hs,1Ht,
        !           716:      $    1Hu,1Hv,1Hw,1Hx,1Hy,1Hz,1H ,1H(,1H),1H;,
        !           717:      $    1H|,1H+,1H-,1H*,1H/,1H$,1H=,1H.,1H,,1H",
        !           718:      $    1H[,1H]/
        !           719: C
        !           720: 
        !           721: 
        !           722: 
        !           723: 
        !           724: 
        !           725: 
        !           726: 
        !           727: 
        !           728: 
        !           729: MATLAB Installation, page 12
        !           730: 
        !           731: 
        !           732: 
        !           733:       DATA EPS/14,25,28,36/,FLOPS/15,21,24,25/
        !           734:       DATA EYE/14,34,14,36/,RAND/27,10,23,13/
        !           735: C
        !           736:       IF (INIT .GT. 0) GO TO 90
        !           737: C
        !           738: C     RTE = UNIT NUMBER FOR TERMINAL INPUT
        !           739: C     WTE = UNIT NUMBER FOR TERMINAL OUTPUT
        !           740: C     HIO = UNIT NUMBER FOR HELP FILE
        !           741:       RTE = 5
        !           742:       WTE = 6
        !           743:       HIO = 9
        !           744: C
        !           745:       IF (INIT .GE. 0) WRITE(WTE,100)
        !           746:   100 FORMAT(//1X,'     < M A T L A B >'
        !           747:      $  /1X,'   Version of --/--/--')
        !           748: C
        !           749: C     ASK HELPER TO OPEN HELP FILE
        !           750:       BUF(1) = 0
        !           751:       CALL HELPER(BUF)
        !           752: C
        !           753: C     RANDOM NUMBER SEED
        !           754:       RAN(1) = 0
        !           755: C
        !           756: C     INITIAL LINE LIMIT
        !           757:       LCT(2) = 25
        !           758: C
        !           759:       ALFL = 52
        !           760:       CASE = 1
        !           761: C     CASE = 1 for file names in lower case
        !           762:       DO 20 I = 1, ALFL
        !           763:          ALFA(I) = ALPHA(I)
        !           764:          ALFB(I) = ALPHB(I)
        !           765:    20 CONTINUE
        !           766: C
        !           767:       VSIZE = 50005
        !           768:       LSIZE = 48
        !           769:       PSIZE = 32
        !           770:       BOT = LSIZE-3
        !           771:       CALL WSET(5,0.0D0,0.0D0,STKR(VSIZE-4),STKI(VSIZE-4),1)
        !           772:       CALL PUTID(IDSTK(1,LSIZE-3),EPS)
        !           773:       LSTK(LSIZE-3) = VSIZE-4
        !           774:       MSTK(LSIZE-3) = 1
        !           775:       NSTK(LSIZE-3) = 1
        !           776:       S = 1.0D0
        !           777:    30 S = S/2.0D0
        !           778:       T = 1.0D0 + S
        !           779:       IF (T .GT. 1.0D0) GO TO 30
        !           780:       STKR(VSIZE-4) = 2.0D0*S
        !           781:       CALL PUTID(IDSTK(1,LSIZE-2),FLOPS)
        !           782:       LSTK(LSIZE-2) = VSIZE-3
        !           783:       MSTK(LSIZE-2) = 1
        !           784:       NSTK(LSIZE-2) = 2
        !           785:       CALL PUTID(IDSTK(1,LSIZE-1), EYE)
        !           786: 
        !           787: 
        !           788: 
        !           789: 
        !           790: 
        !           791: 
        !           792: 
        !           793: 
        !           794: 
        !           795: MATLAB Installation, page 13
        !           796: 
        !           797: 
        !           798: 
        !           799:       LSTK(LSIZE-1) = VSIZE-1
        !           800:       MSTK(LSIZE-1) = -1
        !           801:       NSTK(LSIZE-1) = -1
        !           802:       STKR(VSIZE-1) = 1.0D0
        !           803:       CALL PUTID(IDSTK(1,LSIZE), RAND)
        !           804:       LSTK(LSIZE) = VSIZE
        !           805:       MSTK(LSIZE) = 1
        !           806:       NSTK(LSIZE) = 1
        !           807:       FMT = 1
        !           808:       FLP(1) = 0
        !           809:       FLP(2) = 0
        !           810:       DDT = 0
        !           811:       RAN(2) = 0
        !           812:       PTZ = 0
        !           813:       PT = PTZ
        !           814:       ERR = 0
        !           815:       RIO = RTE
        !           816:       WIO = 0
        !           817:       IF (INIT .LT. 0) RETURN
        !           818: C
        !           819:    90 CALL PARSE
        !           820:       IF (FUN .EQ. 1) CALL MATFN1
        !           821:       IF (FUN .EQ. 2) CALL MATFN2
        !           822:       IF (FUN .EQ. 3) CALL MATFN3
        !           823:       IF (FUN .EQ. 4) CALL MATFN4
        !           824:       IF (FUN .EQ. 5) CALL MATFN5
        !           825:       IF (FUN .EQ. 6) CALL MATFN6
        !           826:       IF (FUN .EQ. 21) CALL MATFN1
        !           827:       IF (FUN .NE. 99) GO TO 90
        !           828:       RETURN
        !           829:       END
        !           830: 
        !           831: 
        !           832: 
        !           833: 
        !           834: 
        !           835: 
        !           836: 
        !           837: 
        !           838: 
        !           839: 
        !           840: 
        !           841: 
        !           842: 
        !           843: 
        !           844: 
        !           845: 
        !           846: 
        !           847: 
        !           848: 
        !           849: 
        !           850: 
        !           851: 
        !           852: 
        !           853: 
        !           854: 
        !           855: 
        !           856: 
        !           857: 
        !           858: 
        !           859: 
        !           860: 
        !           861: MATLAB Installation, page 14
        !           862: 
        !           863: 
        !           864: 
        !           865: Typical file SYS (Nonstandard stuff in lower case):
        !           866: 
        !           867: C     PROGRAM MAIN
        !           868:       call overflow-control
        !           869:       CALL MATLAB(0)
        !           870:       STOP
        !           871:       END
        !           872: 
        !           873: 
        !           874:       SUBROUTINE FILES(LUNIT,NAME)
        !           875:       INTEGER LUNIT,NAME(32)
        !           876: C
        !           877: C     SYSTEM DEPENDENT ROUTINE TO ALLOCATE FILES
        !           878: C     LUNIT = LOGICAL UNIT NUMBER
        !           879: C     NAME = FILE NAME, 1 CHARACTER PER WORD
        !           880: C
        !           881:       character*32 nam
        !           882: c
        !           883: c     close exec, save, load and print files
        !           884:       if (lunit .lt. 0) then
        !           885:          close(unit=-lunit)
        !           886:          return
        !           887:       end if
        !           888: c
        !           889: c     Fortran 77 internal file conversion from 32a1 to character*32
        !           890:       write(nam,'(32a1)') name
        !           891: c
        !           892: c     formatted i/o for exec and print
        !           893:       if (lunit .gt. 2) open(unit=lunit,file=nam)
        !           894: c
        !           895: c     unformatted i/o for save and load
        !           896:       if (lunit .le. 2) open(unit=lunit,file=nam,form='unformatted')
        !           897: c
        !           898: c     rewind all except diary
        !           899:       if (lunit .ne. 8) rewind lunit
        !           900: c
        !           901:       RETURN
        !           902:       END
        !           903: 
        !           904: 
        !           905:       SUBROUTINE SAVLOD(LUNIT,ID,M,N,IMG,JOB,XREAL,XIMAG)
        !           906:       INTEGER LUNIT,ID(4),M,N,IMG,JOB
        !           907:       DOUBLE PRECISION XREAL(1),XIMAG(1)
        !           908: C
        !           909: C     IMPLEMENT SAVE AND LOAD
        !           910: C     LUNIT = LOGICAL UNIT NUMBER
        !           911: C     ID = NAME, FORMAT 4A1
        !           912: C     M, N = DIMENSIONS
        !           913: C     IMG = NONZERO IF XIMAG IS NONZERO
        !           914: C     JOB = 0     FOR SAVE
        !           915: C         = SPACE AVAILABLE FOR LOAD
        !           916: C     XREAL, XIMAG = REAL AND OPTIONAL IMAGINARY PARTS
        !           917: C
        !           918: 
        !           919: 
        !           920: 
        !           921: 
        !           922: 
        !           923: 
        !           924: 
        !           925: 
        !           926: 
        !           927: MATLAB Installation, page 15
        !           928: 
        !           929: 
        !           930: 
        !           931: C     THIS VERSION USES UNFORMATTED READ AND WRITE
        !           932: C
        !           933:       IF (JOB .GT. 0) GO TO 20
        !           934: C
        !           935: C     SAVE
        !           936:    10 WRITE(LUNIT) ID,M,N,IMG
        !           937:       DO 15 J = 1, N
        !           938:          K = (J-1)*M+1
        !           939:          L = J*M
        !           940:          WRITE(LUNIT) (XREAL(I),I=K,L)
        !           941:          IF (IMG .NE. 0) WRITE(LUNIT) (XIMAG(I),I=K,L)
        !           942:    15 CONTINUE
        !           943:       RETURN
        !           944: C
        !           945: C     LOAD
        !           946:    20 READ(LUNIT,END=30) ID,M,N,IMG
        !           947:       IF (M*N .GT. JOB) GO TO 30
        !           948:       DO 25 J = 1, N
        !           949:          K = (J-1)*M+1
        !           950:          L = J*M
        !           951:          READ(LUNIT,END=30) (XREAL(I),I=K,L)
        !           952:          IF (IMG .NE. 0) READ(LUNIT,END=30) (XIMAG(I),I=K,L)
        !           953:    25 CONTINUE
        !           954:       RETURN
        !           955: C
        !           956: C     END OF FILE
        !           957:    30 M = 0
        !           958:       N = 0
        !           959:       RETURN
        !           960:       END
        !           961: 
        !           962: 
        !           963:       SUBROUTINE FORMZ(LUNIT,X,Y)
        !           964:       DOUBLE PRECISION X,Y
        !           965: C
        !           966: C     SYSTEM DEPENDENT ROUTINE TO PRINT WITH Z FORMAT
        !           967: C
        !           968:       IF (Y .NE. 0.0D0) WRITE(LUNIT,10) X,Y
        !           969:       IF (Y .EQ. 0.0D0) WRITE(LUNIT,10) X
        !           970:    10 format(2z18)
        !           971:       RETURN
        !           972:       END
        !           973: 
        !           974: 
        !           975:       DOUBLE PRECISION FUNCTION FLOP(X)
        !           976:       DOUBLE PRECISION X
        !           977: C     SYSTEM DEPENDENT FUNCTION
        !           978: C     COUNT AND POSSIBLY CHOP EACH FLOATING POINT OPERATION
        !           979: C     FLP(1) IS FLOP COUNTER
        !           980: C     FLP(2) IS NUMBER OF PLACES TO BE CHOPPED
        !           981: C
        !           982:       INTEGER SYM,SYN(4),BUF(256),CHAR,FLP(2),FIN,FUN,LHS,RHS,RAN(2)
        !           983:       COMMON /COM/ SYM,SYN,BUF,CHAR,FLP,FIN,FUN,LHS,RHS,RAN
        !           984: 
        !           985: 
        !           986: 
        !           987: 
        !           988: 
        !           989: 
        !           990: 
        !           991: 
        !           992: 
        !           993: MATLAB Installation, page 16
        !           994: 
        !           995: 
        !           996: 
        !           997: C
        !           998:       double precision mask(14),xx,mm
        !           999:       real mas(2,14)
        !          1000:       logical lx(2),lm(2)
        !          1001:       equivalence (lx(1),xx),(lm(1),mm)
        !          1002:       equivalence (mask(1),mas(1))
        !          1003:       data mas/
        !          1004:      $ z'ffffffff',z'fff0ffff',
        !          1005:      $ z'ffffffff',z'ff00ffff',
        !          1006:      $ z'ffffffff',z'f000ffff',
        !          1007:      $ z'ffffffff',z'0000ffff',
        !          1008:      $ z'ffffffff',z'0000fff0',
        !          1009:      $ z'ffffffff',z'0000ff00',
        !          1010:      $ z'ffffffff',z'0000f000',
        !          1011:      $ z'ffffffff',z'00000000',
        !          1012:      $ z'fff0ffff',z'00000000',
        !          1013:      $ z'ff00ffff',z'00000000',
        !          1014:      $ z'f000ffff',z'00000000',
        !          1015:      $ z'0000ffff',z'00000000',
        !          1016:      $ z'0000fff0',z'00000000',
        !          1017:      $ z'0000ff80',z'00000000'/
        !          1018: C
        !          1019:       FLP(1) = FLP(1) + 1
        !          1020:       K = FLP(2)
        !          1021:       FLOP = X
        !          1022:       IF (K .LE. 0) RETURN
        !          1023:       FLOP = 0.0D0
        !          1024:       IF (K .GE. 15) RETURN
        !          1025:       XX = X
        !          1026:       MM = MASK(K)
        !          1027:       LX(1) = and(LX(1),LM(1))
        !          1028:       LX(2) = and(LX(2),LM(2))
        !          1029:       FLOP = XX
        !          1030:       RETURN
        !          1031:       END
        !          1032: 
        !          1033: 
        !          1034:       SUBROUTINE XCHAR(BUF,K)
        !          1035:       INTEGER BUF(1),K
        !          1036: C
        !          1037: C     SYSTEM DEPENDENT ROUTINE TO HANDLE SPECIAL CHARACTERS
        !          1038: C
        !          1039:       INTEGER DDT,ERR,FMT,LCT(4),LIN(1024),LPT(6),RIO,WIO,RTE,WTE
        !          1040:       COMMON /IOP/ DDT,ERR,FMT,LCT,LIN,LPT,RIO,WIO,RTE,WTE
        !          1041:       write(WTE,10) buf(1)
        !          1042:    10 format(A1,' is not a MATLAB character.')
        !          1043:       RETURN
        !          1044:       END
        !          1045: 
        !          1046: 
        !          1047:       SUBROUTINE USER(A,M,N,S,T)
        !          1048:       DOUBLE PRECISION A(M,N),S,T
        !          1049: C
        !          1050: 
        !          1051: 
        !          1052: 
        !          1053: 
        !          1054: 
        !          1055: 
        !          1056: 
        !          1057: 
        !          1058: 
        !          1059: MATLAB Installation, page 17
        !          1060: 
        !          1061: 
        !          1062: 
        !          1063:       INTEGER A3(9)
        !          1064:       DATA A3 /-149,537,-27,-50,180,-9,-154,546,-25/
        !          1065:       IF (A(1,1) .NE. 3.0D0) RETURN
        !          1066:       DO 10 I = 1, 9
        !          1067:          A(I,1) = A3(I)
        !          1068:    10 CONTINUE
        !          1069:       M = 3
        !          1070:       N = 3
        !          1071:       RETURN
        !          1072:       END
        !          1073: 
        !          1074: 
        !          1075:       SUBROUTINE PROMPT(PAUSE)
        !          1076:       INTEGER PAUSE
        !          1077: C
        !          1078: C     ISSUE MATLAB PROMPT WITH OPTIONAL PAUSE
        !          1079: C
        !          1080:       INTEGER DDT,ERR,FMT,LCT(4),LIN(1024),LPT(6),RIO,WIO,RTE,WTE
        !          1081:       COMMON /IOP/ DDT,ERR,FMT,LCT,LIN,LPT,RIO,WIO,RTE,WTE
        !          1082:       WRITE(WTE,10)
        !          1083:       IF (WIO .NE. 0) WRITE(WIO,10)
        !          1084:    10 FORMAT(1X,/'<>')
        !          1085:       IF (PAUSE .EQ. 1) READ(RTE,20) DUMMY
        !          1086:    20 FORMAT(A1)
        !          1087:       RETURN
        !          1088:       END
        !          1089: 
        !          1090: 
        !          1091:       SUBROUTINE PLOT(LUNIT,X,Y,N,P,K,BUF)
        !          1092:       DOUBLE PRECISION X(N),Y(N),P(1)
        !          1093:       INTEGER BUF(79)
        !          1094: C
        !          1095: C     PLOT X VS. Y ON LUNIT
        !          1096: C     IF K IS NONZERO, THEN P(1),...,P(K) ARE EXTRA PARAMETERS
        !          1097: C     BUF IS WORK SPACE
        !          1098: C
        !          1099:       DOUBLE PRECISION XMIN,YMIN,XMAX,YMAX,DY,DX,Y1,Y0
        !          1100:       INTEGER AST,BLANK,H,W
        !          1101:       DATA AST/1H*/,BLANK/1H /,H/20/,W/79/
        !          1102: C
        !          1103: C     H = HEIGHT, W = WIDTH
        !          1104: C
        !          1105:       XMIN = X(1)
        !          1106:       XMAX = X(1)
        !          1107:       YMIN = Y(1)
        !          1108:       YMAX = Y(1)
        !          1109:       DO 10 I = 1, N
        !          1110:          XMIN = DMIN1(XMIN,X(I))
        !          1111:          XMAX = DMAX1(XMAX,X(I))
        !          1112:          YMIN = DMIN1(YMIN,Y(I))
        !          1113:          YMAX = DMAX1(YMAX,Y(I))
        !          1114:    10 CONTINUE
        !          1115:       DX = XMAX - XMIN
        !          1116: 
        !          1117: 
        !          1118: 
        !          1119: 
        !          1120: 
        !          1121: 
        !          1122: 
        !          1123: 
        !          1124: 
        !          1125: MATLAB Installation, page 18
        !          1126: 
        !          1127: 
        !          1128: 
        !          1129:       IF (DX .EQ. 0.0D0) DX = 1.0D0
        !          1130:       DY = YMAX - YMIN
        !          1131:       WRITE(LUNIT,35)
        !          1132:       DO 40 L = 1, H
        !          1133:          DO 20 J = 1, W
        !          1134:             BUF(J) = BLANK
        !          1135:    20    CONTINUE
        !          1136:          Y1 = YMIN + (H-L+1)*DY/H
        !          1137:          Y0 = YMIN + (H-L)*DY/H
        !          1138:          JMAX = 1
        !          1139:          DO 30 I = 1, N
        !          1140:             IF (Y(I) .GT. Y1) GO TO 30
        !          1141:             IF (L.NE.H .AND. Y(I).LE.Y0) GO TO 30
        !          1142:             J = 1 + (W-1)*(X(I) - XMIN)/DX
        !          1143:             BUF(J) = AST
        !          1144:             JMAX = MAX0(JMAX,J)
        !          1145:    30    CONTINUE
        !          1146:          WRITE(LUNIT,35) (BUF(J),J=1,JMAX)
        !          1147:    35    FORMAT(1X,79A1)
        !          1148:    40 CONTINUE
        !          1149:       RETURN
        !          1150:       END
        !          1151: 
        !          1152: 
        !          1153:       SUBROUTINE EDIT(BUF,N)
        !          1154:       INTEGER BUF(N)
        !          1155: C
        !          1156: C     CALLED AFTER INPUT OF A SINGLE BACKSLASH
        !          1157: C     BUF CONTAINS PREVIOUS INPUT LINE, ONE CHAR PER WORD
        !          1158: C     ENTER LOCAL EDITOR IF POSSIBLE
        !          1159: C
        !          1160:       character*256 s
        !          1161:       open(7,file='----')
        !          1162:       write(7,10) (buf(i),i=1,n)
        !          1163:    10 format(256a1)
        !          1164:       close(7)
        !          1165:       call system('edit  ----')
        !          1166:       open(7,file='----')
        !          1167:       rewind 7
        !          1168:       read(7,'(a)') s
        !          1169:       close(7)
        !          1170:       call system('remove ----')
        !          1171:       n = 0
        !          1172:       do 20 i = 1, 256
        !          1173:          if (s(i:i) .ne. ' ') n = i
        !          1174:    20 continue
        !          1175:       read(s,10) (buf(i),i=1,n)
        !          1176:       RETURN
        !          1177:       END
        !          1178: 
        !          1179: 
        !          1180: 
        !          1181: 
        !          1182: 
        !          1183: 
        !          1184: 
        !          1185: 
        !          1186: 
        !          1187: 
        !          1188: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.