ITO Documentation (from source code)

             THIS PROGRAM WAS WRITTEN BY
                         J.W. VISSER
              OF THE TECHNISCH PHYSISCHE DIENST TNO-TH
              P.O.BOX 155 DELFT NETHERLANDS.
              IT CONTAINS MANY IDEAS AND SUGGESTIONS FROM
                        PROF.DR. P.M. DE WOLFF
              OF THE TECHNICAL UNIVERSITY (T.H) DELFT.


              A DESCRIPTION OF THE PROGRAM WAS PUBLISHED IN
              JOURNAL OF APPLIED CRYSTALLOGRAPHY.(1969) 2,89.


              THIS WORK WAS LARGELY SPONSORED BY THE  THEN NAMED
              'JOINT COMMITTEE ON POWDER  DIFFRACTION STANDARDS '
              now  'The International Centre for Diffraction Data'
              at the   Newtown Square Corporate Campus
              12 Campus Boulevard,  Newtown Square, PA 19073 - 3273
              AND THE CENTRAL ORGANIZATION FOR  TNO, THE HAGUE,
              NETHERLANDS.


      THE PURPOSE OF THE PROGRAM IS TO FIND THE UNIT CELL FROM
      THE POWDER PATTERN  OF COMPOUNDS OF LOW SYMMETRY.
      ONE- AND TWO- PARAMETER PROBLEMS CAN BE SOLVED BY SIMPLER
      METHODS, BUT WILL BE SOLVED TOO.


      THANKS ARE DUE TO   ROBIN SHIRLEY    OF THE UNIVERSITEY OF SURREY
      WHO CONTRIBUTED MANY EXCELLENT IDEAS  AND ALSO MADE THE OUTPUT
      MUCH BETTER UNDERSTANDABLE,
                    AND
      DR. GERALD G. JOHNSON JR. OF THE PENNSYLVANIA STATE UNIVERSITY
      FOR MANY EXCELLENT IDEAS, SOME AS A RESULT FROM FEEDBACK BY USERS
      IN THE U.S.A. TO WHOM HE DISTRIBUTED  THIS PROGRAM,   AND FOR
      FORCING ME TO WRITE THIS PROGRAM IN A STANDARD (ANSI) LANGUAGE.


 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
         THIS PROGRAM HAS PASSED THROUGH SEVERAL VERSIONS AND HAS
      FOUND THE CORRECT UNIT CELL IN A LARGE NUMBER OF CASES. IT IS
      POSSIBLE, HOWEVER, THAT UNDER SOME CIRCUMSTANCES, WITH A PARTICULA
      SET OF DATA, OR WHEN USED WITH A PARTICULAR COMPUTER SYSTEM,
      ERRONEOUS RESULTS WILL BE OBTAINED.
      THE AUTHOR, THE  TECHNISCH PHYSISCHE DIENST TNO-TH, OR THE
      JOINT COMMITTEE ON POWDER DIFFRACTION STANDARDS, THEREFORE, TAKE
      NO RESPONSIBILITIES WHATSOEVER FOR  THE CORRECTNESS OF THE
      PROGRAM OR THE RESULTS.
         IT WOULD BE APPRECIATED IF ANY DISCREPANCIES IN THE PROGRAM
      ARE BROUGHT TO THE ATTENTION OF THE AUTHOR, FOR IMPROVEMENTS IN
      LATER VERSIONS.
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 -----------------------------------------------------------------------
 -----------------------------------------------------------------------
                        VERSION  15      NOVEMBER  1993
 -----------------------------------------------------------------------
 -----------------------------------------------------------------------
         VERSION 0
              VERSION 1 WAS PRECEDED BY SEVERAL VERSIONS OF AN
              ALGOL PROGRAM, WHICH WAS SEMI-AUTOMATICALLY TRANSLATED
              INTO A PL/1 PROGRAM, WHICH WAS THEN TRANSLATED INTO
              A FORTRAN PROGRAM. THE CHANGE FROM ALGOL TO PL/1
              BECAME NEARLY A NECESSITY BY SWITCHING FROM A TELEFUNKEN
              TR4 TO AN IBM-MACHINE. PL/1 WAS ABANDONED BECAUSE IT WAS
              NOT SO UNIVERSALLY KNOWN AS WE WERE LED TO BELIEVE.
         VERSION 1
              TRIALS TO MAKE THE  FORTRAN  PROGRAM EQUIVALENT TO
              THE PL/I PROGRAM.
         VERSION 2
             = PROVISIONS FOR MOLECULAR WEIGHT AND DENSITY.
             = PRINT-OUT OF INPUT CARDS.
         VERSION 3
             = ADDITION OF THE PROCEDURE SYMTST (TESTING ON
               HIGHER SYMMETRIES) AND LESSER IMPROVEMENTS.
         VERSION 4.
             = ADAPTATIONS TO AVOID DIFFICULTIES ENCOUNTERED ON
               OTHER MACHINES (INCLUDING OTHER IBM-MACHINES).
             = INTRODUCTION OF SUBROUTINE  ECHO IN CONNECTION
               WITH BACKSPACE DIFFICULTIES.
             = MINOR CHANGES IN THE OUTPUT.
             = SUBROUTINES IN ALFABETICAL  ORDER.
         VERSION 5
             = INSTRUCTION MANUAL
             = IMPROVED OUTPUT TEXT.
             = MORE TESTS ON INPUT.
             = TESTING ON HIGHER SYMMETRIES  IMPROVED.
             = AN EFFORT HAS BEEN MADE TO COMPLY WITH THE REQUIREMENTS
               OF  *ANS* FORTRAN.  THIS WAS NOT EVERYWHERE POSSIBLE.
         VERSION 6
             = MANY WISHES FROM USERS FULFILLED.
             = DISCLAIMERS, BOTH IN COMMENT ON MAIN AND IN OUTPUT.
             = MIXED-MODE ARITHMETIC REMOVED.
             = SUBROUTINE WRISP REWRITTEN FOR FASTER PRINTING.
             = POSSIBILITY TO PRINT AN INSTRUCTION MANUAL ON THE
               SPECIAL FEATURES OF THE PROGRAM.
             = POSSIBILITY TO ENTER  INTENSITIES WITH THE LINES.
             = POSSIBILITY TO PRODUCE A LIST OF ALL CALCULATED AND
               OBSERVED LINES.
             = POSSIBILITY TO ENHANCE CERTAIN CRYSTAL SYSTEMS. DUE TO
               THE GENERAL CONSTRUCTION OF THE PROGRAM, THIS IS ONLY
               POSSIBLE FOR ORTHORHOMBIC,MONOCLINIC OR TRICLINIC
               LATTICES.
             = PROBABILITY TO  *HIT*  A LINE IS SUBDIVIDED OVER THE
               Q RANGE.   CHANGES IN  CRITER.
             = ERROR LIMITS ON OBSERVED Q'S CALCULATED ONCE.  DISPLAYED
               WHEN TEST=.TRUE.
             = OVERLAYS  TESTED.
         VERSION 7
             = ALL  A-FORMATS REDUCED TO A1, EXCEPT THOSE THAT PRINT
               INTENSITIES IN CHARACTER FORM (A3)-  THESE OCCUR  ONLY
               IN *READER*, *LISTM* AND *REFINE* .
             = TRIES TO INDEX ALL LINES WITH THE UNIT CELL OF
               THE BEST SOLUTION.
             = INSTRUCTIONS REWRITTEN, OTHER EXPLANATIONS EXTENDED.
             = THE USE OF ONE SET OF HKL'S TO EXPLAIN MORE THAN
               ONE OBSERVED LINE  IS FLAGGED.
             = NUMBER OF SOLUTIONS THAT  ARE PRINTED OUT EXTENSIVELY
               CAN BE CHANGED.
         VERSION 8
             = INPUT FORMAT CHANGED-- ADDITIONAL PARAMETER CARD.
             = ZERO SHIFT (SPECIMEN DISPLACEMENT+TRANSPARENCY
               CORRECTION ON DIFFRACTOMETER)--THE NEW PARAMETER CARD
               STARTS WITH THE ZERO CORRECTION (ZERCOR), TO BE
               APPLIED TO ALL ANGLES.
             = ZERCHK-- THE PROGRAM APPLIES 20 DIFFERENT ZERO SHIFTS
               AND GIVES FOR EACH SHIFT THE NUMBER OF HIGHER ORDER
               LINES THAT FIT--   IN THIS WAY IT SHOULD BE POSSIBLE
               TO DECIDE WHETHER A ZERO SHIFT IS NECESSARY.
             = ONLY SOLUTIONS WITH A FIGURE OF MERIT THAT IS BETTER
               THAN 4.0 ARE PRINTED--YOU MAY SET YOUR OWN MINIMUM
               WITH PRNTMR.
             = WITH PRNTLN YOU CAN SET YOUR OWN MINIMUM OF INDEXED
               LINES THAT IS NEEDED IN ORDER THAT THE LATTICE
               WILL BE PRINTED.
             = FOR TRIAL, IT IS NOW POSSIBLE TO ENTER A DIRECT CELL.
             = COMBINATIONS OF ZONES WITH ITSELF NOW TRIES BOTH AXES
               AS 'COMMON' AXES.
             = THE NUMBER OF CYCLES OF LATTICE REFINEMENT IS INCREASED.
             = *REFPAR* IS SPLIT INTO TWO SUBROUTINES,ONE OF WHICH
               (REFPAR) SETS THE PARAMETERS FOR THE OTHER (REFINE)--
               THE LATTER SUBROUTINE DOES THE ACTUAL CALCULATIONS.
             = TOLERANCES  ON FITTING LINES NOW EXPRESSED IN TWO THETA.
             = A(3) FORMATS CHANGED INTO A(2),1X.
         VERSION 8.5
             =     THE MAIN PROGRAM IS NOW SPLIT INTO 3 PARTS,AABITO,
               AAITO1 AND ANITO2--  THE NEW MAIN PROGRAM (AABITO)
               COMMENTS, INITIALISES SOME VALUES AND CALLS READER, AAITO1
               AND ANITO2.
             = ZERCHK IS NOW OPTIONAL (COL. 33 IN PARAMETER CARD).
             = THE SUBROUTINE *NTEST* LIMITS THE TEST OUTPUT TO
               A SMALL PART OF THE PROGRAM, OR PRINTS ALL TEST OUTPUT
               AFTER A CERTAIN POINT-- THE COMMENT IN THE SUBROUTINE
               GUIDES YOU TO THE ACTUAL CALLS--  THE SUBROUTINE IS ONLY
               USEFUL WHEN YOU ARE CHANGING PARTS OF THE PROGRAM.
             = LATTICES THAT ARE DISCARDED IN *NORM3* ARE NOW
               EXPLICITLY NAMED--  ALSO NAMED ARE THE LATTICES THAT ARE
               DISCARDED BECAUSE THEY ARE  *EQUAL* TO OTHERS.
         VERSION 9
             = SUBROUTINE READER WAS SPLIT IN TWO PARTS, READER  AND
               REDLIN. THIS LAST SUBROUTINE READS THE INPUT LINES. IT
               ALSO CALCULATES THE MAXIMUM ERROR (IN TWO THETA) THAT
               YOUR INPUT DATA COULD HAVE IN ORDER TO BE ABLE TO PASS
               THE TESTS (FIGURE OF MERIT .GT. 10)--
             = TWICE THIS MAXIMUM ERROR IS USED AS THE DEFAULT TOLG,
               BUT ONLY IF TOLG REMAINS LESS THAN 0.060 DEGREES. --
               ENTERING YOUR OWN TOLG OVERRIDES THE DEFAULTS.--
             = IN THE LIST OF ALL CALCULATED AND OBSERVED LINES,
               THE UNINDEXED LINES ARE NOW MARKED CONSPICUOUSLY (IDEA
               FROM CAM HUBBARD)--
             = THE FATE OF THE POSSIBLE LATTICES IS PRINTED IN FULL,
               BUT ONLY IF YOU PRINT INTERMEDIATE RESULTS (ENL=TRUE)--
             = THE MINIMUM VALUES OF THE RECIPROCAL LATTICE CONSTANTS
               NOW ALLOWS THE FIRST LINE TO BE A FOURTH ORDER. IN AN
               EXPERIMENTAL PATTERN, WHICH WAS ORTHORHOMBIC  WITH
               SPACEGROUP FDD2, THIS SITUATION ACTUALLY OCCURRED ---
         VERSION 10  (A)
                           FORTRAN 77
             = MODIFIED TO CONCUR WITH FULL FORTRAN 77.THIS ALLOWED A
               SIMPLER VERSION OF SUBROUTINE ECHO.--
             = EXPLANATION OF THE VARIABLES IN COMMON BLOCKS IS
               GIVEN IN THIS PROGRAM (BELOW). --
             = INDIVIDUAL PROBABILITIES FOR EACH LINE (FOR FINZON).--
             = CRITER CHANGED TO CONCUR WITH EARLIER IDEAS.--
             = SORTING OF ZONES IN THE NEW SUBROUTINE  *SRTZON* --
             = THE OUTPUT OF EVALUATE IS SORTED ON THE CRITERION
               CRIT,  BUT IF NO CORRECT LATTICE IS OBTAINED, IT IS USED
               AGAIN BUT SORTED ON THE NUMBER OF OBSERVED LINES (NO)
               THAT MATCH THE ZONE. A SUBSORT IS MADE ON THE NUMBER OF
               CALCULATED LINES (NC). THIS SOMETIMES LEADS TO SUCCES.--
             = THE PAPER BY MIGHELL AND STALICK IN 'ACCURACY IN POWDER
               DIFFRACTION' HAS CONVINCED ME THAT IT IS NECESSARY TO
               ENSURE THAT ALL AVAILABLE DATA (UP TO 40 LINES) IS
               ENTERED INTO THE PROGRAM.
             = IF YOU NOW WANT TO ENTER LESS THAN 32 LINES, YOU GET A
               WARNING AND YOU HAVE TO ENTER THE CORRECT NUMBER OF LINES
               ON THE SECOND PARAMETER CARD.--
             = A TRIAL WAS MADE IN REFINING THE ZONES ON THETA
               INSTEAD OF Q. THIS DID NOT WORK AS WELL AS REFINING ON Q.
               THEREFORE, ONLY THE BEST ZONES ARE (AT THE END OF THE
               EVALUATION PROCESS) REFINED ON THETA IN ORDER TO
               ESTABLISH  A ZERO-SHIFT FOR EACH ZONE.
             = SINCE I DO NOT KNOW YET HOW USEFUL THIS CAN BE, NOTHING
               MUCH IS BEING DONE WITH IT.  IF YOU WANT TO, YOU CAN
               USE THE INFORMATION BY ENTERING A CONVINCING
               TWOTHETA-SHIFT INTO THE PROGRAM (REVERSE THE SIGN STATED
               AND ENTER ON SECOND PARAMETER CARD IN COL 1-9). --
             = LATTICES ARE ALSO REFINED ON TWOTHETA, TOGETHER
               WITH A ZERO SHIFT. THE ZERO SHIFT IS STORED IN
               ROSTER(I,11) AND PRINTED.

         VERSION 11
             = ECHO CHANGED FOR THE USE OF *IOSTAT*. --
             = PRINTING OF Q-SCHEMES FOR THE LATTICES ONLY
               WHEN TEST=TRUE. --
             = INSTRUCTIONS CLARIFIED. --
             = INPUT OF 32 LINES AND LESS WITHOUT DIFFICULTY AGAIN,
               BUT WITH AMPLE WARNING. --
             = FINAL SORTING OF LATTICES ON: M20/(21-LINES INDEXED).--
             = A BIBLIOGRAPHY WAS ADDED IN THE TEXT OF THE NEW ROUTINE
               BIBLIO. IT IS ANNOUNCED IN THE PROGRAM OUTPUT. --
             = THE NAME OF SUBROUTINE SRTRON WAS CHANGED INTO SRTLIN. --
             = CARDS (RECORDS) NO LONGER NUMBERED. --
             = FOR *EXPORT* PURPOSES THE PROGRAM PLUS SUBROUTINES WAS
               DIVIDED INTO 6 FILES OF ABT. 820 RECORDS EACH. --

       VERSION 12
             = OUTPUT OF A SUMMARY OF THE DATA OF THE BEST SOLUTION ON
               UNIT NSUMM (66). THE LENGTH OF THE LINES IN THIS OUTPUT
               IS RESTRICTED TO 70 CHARACTERS. --
             = SOMETIMES A MONOCLINIC LATTICE IS FOUND TO BE A
               RHOMBOHEDRAL LATTICE IN DISGUISE. A REFINEMENT OF THE
               HEXAGONAL LATTICE CONSTANTS IS NOW CARRIED OUT IN THE
               NEW SUBROUTINE *REFSYM* , FOLLOWED BY A PRINT-OUT OF
               THE PATTERN AS INDEXED ON HEXAGONAL AXIS. --
             = TETRAGONAL,HEXAGONAL AND CUBIC LATTICES ARE ALSO
               RECOGNISED AND REFINED AS SUCH. THEY ARE PRINTED BY
               THE NEW SUBROUTINE *SYMPRT*. --

       VERSION 13                      JUNE 1987
             = THE CALCULATED ZERO-SHIFT (WHICH ALSO ACCOUNTS FOR
               THE SPECIMEN DISPLACEMENT ERROR AT SMALL TWOTHETAS)
               IS NOW APPLIED TO THE CALCULATED TWOTHETAS, IN ORDER
               NOT TO CHANGE THE *OBSERVED* VALUES.  THIS IS WRONG
               IN PRINCIPLE, BUT SAVES MISUNDERSTANDINGS.

       VERSION 14                      November 1993
             = This version is specially adapted to a PC.
               For AT's and '286-ers it gives intermediate output
               on the screen. A '486 goes too fast for the intermediate
               output to be useful.
               It is a continuation of version 12.
             = The program asks for the names of the input and
               output files.
             = The calculated zeroshift is applied again to the
               *observed* values (return to version 12).
             = Twothetas are now given in three decimals.
             = The summary is again in a separate file, which can
               be printed separately.
             = The program continuously writes output onto the screen.
             = Possibility to suppress the zeroshift.
             = New division of the source code (3 'main' pgms).

       VERSION 15                        December 1993
             = Output of intermediate results on the monitor is suppressed.
             = Possibility to enter the number of reflections that is
               actually to be used.  Too few lines may not give enough
               information, too many lines may give too many false clues.


 -----------------------------------------------------------------------
 -----------------------------------------------------------------------
            INPUT AND OUTPUT
 -----------------------------------------------------------------------
      The program asks for the names of the input file and of the file for
      the summary of the output.
      Moreover, a copy of the input file is made on ITODOC.LST (for
      checking and testing purposes), and a more elaborate output is
      written onto ITOUT.LST.


      THE INPUT OF THIS PROGRAM SHOULD CONSIST OF:
      1. A TITLE RECORD,CONTAINING UP TO 80 CHARACTERS
      2. TWO PARAMETER RECORDS,THAT CAN BE COMPLETELY BLANK
      3. A NUMBER OF LINES RECORDS, CONTAINING THE POSITIONS OF THE LINES
         THESE CAN BE ENTERED AS D-,Q- OR TWOTHETA VALUES. ( 8 F10.5 )
         YOU MAY LEAVE ANY NUMBER OF POSITIONS PER RECORD  BLANK.
         THIS MEANS THAT YOU CAN ALSO ENTER ONLY ONE LINE PER RECORD,
         IN ANY ONE OF THE POSITIONS OF 8F10.5
      4. A BLANK RECORD, TO FINISH THE INPUT OF ONE PROBLEM.

         REPEAT THE ABOVE  AS MANY TIMES AS PROBLEMS,   -- THEN --
      5. A RECORD CONTAINING THE WORD  --  END  -- IN THE THREE FIRST
         COLUMNS,  TO FINISH THE INPUT.

      Note: Instead of records that are completely blank, it is often
            wise to enter  0.0    .


   THE PROGRAM WILL TAKE ITS OWN (DEFAULT) PARAMETERS.
   FOR THE INITIATED THE SUBROUTINE READER GIVES FULL DETAILS ABOUT
   ALL THE  POSIBILITIES OF THE PROGRAM.


 -----------------------------------------------------------------------
               THE SUBROUTINES  ARE  LISTED  IN  ALFABETICAL  ORDER.
 -----------------------------------------------------------------------

                          GENERAL FLOW OF SUBROUTINES
         (THE ACTUAL FLOW OF SUBROUTINES IS SLIGHTLY MORE COMPLICATED)
 -----------------------------------------------------------------------
       SUBROUTINES TIMER AND NTEST ARE FREQUENTLY CALLED BY THE
       MAIN PROGRAM. NTEST CALLS ARE MARKED BY 1+ , 2+ , ETC.
 .......................................................................


         *******            *******           **********
         *     *            *     * <-------> *  ECHO  *        ********
         *  M  *            *  R  *           **********   |--> *SRTLIN*
         *     *            *     * <-------> * REDLIN * <-|    ********
       1+*  A  * <--------> *  E  *           **********   |--> *TETCAL*
         *     *            *     * <-------> * RECCEL *        ********
         *  I  *            *  A  *           **********
         *     *            *     * <-------> * MANUAL *
         *  N  *            *  D  *           **********
    |--->*     *            *     * <-------> * INSTRS *
    |    *******            *  E  *           **********
    |       |               *     * <-------> * ZERCHK *
    |       |               *  R  *           **********
    |       |               *     * <-------> * BIBLIO *
    |       |               *******           **********
    |       |
    |  2+*******            **********
    |    *     *  <-------> * FINZON *
    |    *     *            **********
    |    *  A  *
    |    *     *            *******           ******         *********
    |    *     *            *     *  <------> * LS *  <----> * WRISP *
    |    *     *            *  E  *           ******         *********
    |    *  A  *            *  V  *           ********
    |    *     *            *  A  *  <------> * NORM *
    |    *     *  <-------> *  L  *           ********
    |    *     *            *  U  *           **********
    |  3+*  I  *            *  8  *  <------> * CRITER *
    |    *     *            *     *           **********
    |    *     *            *     *           *********
    |    *     *            *******  <------> * TEXT1 *
    |    *     *                              *********
    |    *  T  *            **********
    |    *     *  <-------> * SRTZON *
    |    *     *            **********
    |  4+*     *
    |    *  O  *            **********
    |    *     *  <-------> * ONEZON *
    |    *     *            **********
    |    *     *
    |    *  1  *
    |    *     *            ********
    |  5+*     *  <-------> * REAR *
    |    *******            ********
    |
    |
    |
    |    *******            **********
    |--->*     *  <-------> * THREED *
         *     *            **********
       6+*     *
         *     *            *********          **********
         *     *  <-------> * NORM3 * <------> * WISSEL *
         *  A  *            *********          **********
         *     *
       7+*     *
         *     *
       8+*     *        *******        *******           **********
         *  N  *        *     *        *     *  <------> *        *
         *     *        *  R  *        *  R  *           **********
         *     *        *     *        *     *           *********
         *     *        *  E  *        *  E  *  <------> * WRISP *
         *     *        *     *        *     *           *********
         *  I  * <----> *  F  * <----> *  F  *           *********
         *     *        *     *        *     *  <------> * ARRAY *
         *     *        *  P  *        *  I  *           *********
         *     *        *     *        *     *           ********
         *     *        *  A  *        *  N  *  <------> * MINV *
         *  T  *        *     *        *     *           ********
         *     *        *  R  *        *  E  *           *********
         *     *        *     *        *     *  <------> * LISTM *
         *     *        *******        *******           *********
       9+*     *
         *  O  *            **********
         *     *  <-------> * UNTCEL *
         *     *            **********
         *     *
         *  2  *            **********         **********
         *     *  <-------> * SYMTST * <-----> * REFSYM *
         *     *            **********         **********
         *     *
         *     *            **********
         *     *  <-------> * SRTSYM *
         *     *            **********
         *     *                               **********
         *     *            ********** <-----> *  LISTM *
         *     *  <-------> * SYMPRT *         **********
         *     *            ********** <-----> * REFSYM *
         *     *                               **********
         *******

 -----------------------------------------------------------------------
                        MINIMISING STORAGE REQUIREMENTS.
 -----------------------------------------------------------------------
                        ONLY VALID FOR VERSION 6.
                 FOR NEWER VERSIONS IT CAN SERVE AS A GUIDE.
 .......................................................................

      1. OVERLAY.

              THE SUGGESTED OVERLAY STRUCTURE NEEDS ONLY ABOUT 60%
              OF THE STORAGE NEEDED FOR THE FULL PROGRAM,
              WITHOUT IMPAIRING ITS EFFICIENCY.
              THE SUBROUTINES  *FINZON*  AND *THREED*  HAVE THE
              LARGEST REQUIREMENTS FOR MAIN STORAGE.    THEREFORE, IT IS
              NOT NECESSARY TO GO BEYOND ONE LEVEL OF OVERLAY.
              I SUGGEST THE FOLLOWING SCHEME

              ENTRY  MAIN      COMMENT* ROOT SEGMENT, SEGMENT 1
              OVERLAY ONE
              INCLUDE SUB(READEM)     COMMENT*  SEGMENT 2
              OVERLAY ONE
              INCLUDE SUB(FINZON)     COMMENT* SEGMENT 3
              OVERLAY ONE
              ETC.  ETC.  ETC.

              SEGMENT     CONTENTS
                 1        MAIN + COMMONS, EXCEPT *COUNTM*
                 2        READER+ECHO+MANUAL+INSTRS+SRTLIN
                 3        FINZON
                 4        EVALU8+LS+WRISP+NORM+CRITER+TEXT1
                 5        ONEZON+REAR
                 6        THREED
                 7        NORM3
                 8        REFPAR+WISSEL+ARRAY+MINV+LISTM+ *PRINS*
                 9        UNTCEL+SYMTST

              THE FOLLOWING CHANGES ARE NECESSARY
              A.DELETE THE COMMON *COUNTM* THROUGHOUT THE PROGRAM,
                USE AN ARRAY  *ITL(5000)* INSTEAD OF THIS COMMON
                IN THE SUBROUTINES *FINZON* AND *THREED*
              B.DELETE THE SUBROUTINE CALL FOR *NORM3* FROM *REFPAR*
                INSERT A CARD      95 CONTINUE
              C.CHANGE THE NAME OF THE SUBROUTINE *WRISP* IN *REFPAR*
                INTO SOMETHING DIFFERENT, LIKE *PRINS*  AND CHANGE THE
                FOUR SUBROUTINE CALLS FOR *WRISP* IN *REFPAR*
                ACCORDINGLY
              THE CALL FOR *NORM3* IN *REFPAR* IS ONLY SELDOM
              REALLY NECESSARY,  HOWEVER,
              IF THE RESULTS OF A PARTICULAR POWDER PATTERN SEEM STRANGE
              TO YOU, YOU CAN ALWAYS FORCE ANOTHER APPLICATION OF *NORM3
              BY RE-ENTERING YOUR DATA AND THE STRANGE LATTICES,
              SEE  MANUAL AND INSTRUCTIONS, USE COL 44 OF PARAMETER CARD


      1B OVERLAY 2.

              ON AN IBM 370/158 THE PROGRAM RAN IN  84K INSTEAD OF 140
              AND WITHOUT MEASURABLE LOSS OF SPEED WITH THE FOLLOWING
              SCHEME
              A. COMPILE THE PROGRAM AS GIVEN WITH  PARM.LKED=OVLY
              B.GIVE  LKED.SYSIN  DD  *
                 ENTRY MAIN
                 INSERT MAIN
                 OVERLAY  ALPHA
                   INSERT READER,MANUAL,ECHO,INSTRS,SRTLIN,IHCSSCN
                 OVERLAY  ALPHA
                   INSERT FINZON,THREED,COUNTM
                 OVERLAY  ALPHA
                   INSERT EVALU8,LS,NORM,CRITER,TEXT1,EVALN,LINSTR,IHCSE
                   INSERT REFPAR,WISSEL,WRISP,ARRAY,MINV,NORM3,LISTM
                 OVERLAY  ALPHA
                   INSERT ONEZON,REAR,UNTCEL,SYMTST
              /*


      2. CHOPPING UP THE PROGRAM.

              IF YOU HAVE A REALLY SMALL COMPUTER, IT IS STILL
              POSSIBLE TO RUN THIS PROGRAM.
              AS THE PROGRAM USES ITS MAIN SUBROUTINES SEQUENTIALLY,
              IT IS POSSIBLE TO IMITATE AN OVERLAY AND DIVIDE THE MAIN
              PROGRAM IN A NUMBER OF PIECES THAT WILL WORK AS
              SEPARATE UNITS.  AFTER EVERY PART IT WILL BE NECESSARY
              TO SAVE THE VALUES OF MOST COMMON AREAS AND OF THE
              ARRAY  *STORE*.    THE DIVISION OF THE PROGRAM SHOULD
              FOLLOW THE SAME MAIN LINE  AS THE  OVERLAY STRUCTURE.
              I HAVE NOT TRIED THIS MYSELF, AS I HAVE A VERY LARGE
              COMPUTER AVAILABLE.  I AM QUITE WILLING TO HELP ANYBODY
              WHO TRIES THE ABOVE IDEA.   PLEASE CONTACT ME .

 -----------------------------------------------------------------------
 -----------------------------------------------------------------------
 -----------------------------------------------------------------------
                 EXPLANATION OF VARIABLES IN  COMMON.

      1.LINES
        IDOC     OUTPUT FILE FOR DOCUMENTATION PURPOSES. LISTS INPUT
                 AS GIVEN
        INP      INPUT UNIT,FROM WHICH ALL INPUT IS READ.
        IOUT     STANDARD OUTPUT UNIT (LINE PRINTER)
        NCRT     Output to monitor
       (NSUMM    OUTPUT UNIT FOR CRT-TERMINAL IS IN COMMON CONSTS)
        MAX      THE NUMBER OF OBSERVED LINES THAT ARE USED (.LE. 40)
        OBS(40)  CONTAINS THE Q-VALUES OF THE OBSERVED LINES.
        CEL(10)  USED FOR SEVERAL PURPOSES, CAN CONTAIN UNIT CELLS
                 OR LINE COMBINATIONS OR ZONES.
     2. CHARCM
        NAME     NAME OF PROBLEM.
        CARD     CONTAINS THE IMAGE OF THE 'CARD' THAT WAS LAST READ.
        INTSY(50) CONTAINS THE INTENSITIES (GIVEN AS  VS , S , ETC.)
                 OF THE OBSERVED LINES.
     3. PARMS
        TOL2     TOLERANCE ON 2-DIMENSIONAL SEARCH FOR THE ANGLE BETWEEN
                 THE DIRECTIONS OF THE POINTS REPRESENTED BY Q-VALUES.
        TOL3     SAME FOR THREE-DIMENSIONAL SEARCH (FOR D)
        WAVEL    WAVELENGTH  (1.5406 BY DEFAULT)(1.5405891)
        FMINEQ   MAXIMUM VALUE FOR THE DIFFERENCE BETWEEN 'EQUAL' VALUES
        FMINIM   MINIMUM VALUE FOR THE FIRST THREE LATTICE CONSTANTS.
        SELF     LOGICAL
        ENL      LOGICAL FOR PRINTING INTERMEDIATE RESULTS.
        TEST     LOGICAL FOR PRINTING ALL TEST RESULTS.
        LIST     THE NUMBER OF LATTICES THAT ARE TO BE PRINTED OUT
        NSYST(3) SEE INSTRUCTIONS. POSSIBILITY TO ENHANCE SOME CRYSTAL
                 SYSTEMS
        OBSMT(40) Q-VALUES OF THE OBSERVED LINES MINUS TOLERANCE.
        OBSPT(40) Q-VALUES OF THE OBSERVED LINES PLUS THE  TOLERANCE.
        TWTHET(40) TWO-THETA'S OF THE OBSERVED LINES.
        TOLG     TOLERANCE (IN HUNDREDTH OF A DEGREE  TWO THETA)

     4. EVALN
        NORDER   NUMBER OF ORDERS OF AXES' Q-VALUES, USUALLY 4.
                 NORDER DETERMINES THE INDEX-FIELD OF THE ZONES AT
                 EVALUATION.
        RECTAN   LOGICAL THAT IS .TRUE. WHEN THE ZONE IS RECTANGULAR.
        PROB(40) PROBABILITY TO 'HIT' AN OBSERVED LINE BY CHANCE.
        EVAL(-8:8,0:8) ARRAY CONTAINING THE PROBABILITIES OF THE
                 CALCULATED LINES THAT ARE ALSO OBSERVED.
        UPBNDR(40) UPPER BOUNDARY OF THE PROBABILITY FIELD OF EACH LINE.

     5. TEMRES
        LINCO    THE NUMBER OF LINE COMBINATIONS
        NQ2      THE NUMBER OF THE LAST LINE TO BE COMBINED WITH OTHERS.
        NINDEX   THE NUMBER OF LINES INDEXED AMONG THE FIRST NQ2 LINES
        INDEX(40) ARRAY TO COUNT WHETHER A LINE WAS INDEXED BY A
                 PARTICULAR ZONE.
        ROSTER(150,12) ARRAY IN WHICH THE USEFUL LATTICES ARE STORED.
          1...6 CELL CONSTANTS, 7=LINES INDEXED,  8=M20, 9=BRAV.TYP,
          10=PEDIGREE, 11=ZEROSHIFT,  12=VALUE FOR RANKING=[8]/(21-[7])

     6. CONSTS
        NSUMM    NUMBER OF UNIT ONTO WHICH A SUMMARY IS WRITTEN.
                 THE LENGTH OF THE LINES IS LESS THAN 71 CHARACTERS.
        RAD,TWORAD FACTORS FOR CALCULATING DEGREES FROM RADIANS.
        RRAD     FACTOR TO CALCULATE RADIANS FROM DEGREES (RECIPROCAL)
        HLFLAM   WAVELENGTH/(2*100). FACTOR 100 STEMS FROM THE FACT
                 THAT Q HAS BEEN MULTIPLIED BY 100**2
        WAVSQR   CONSTANT NEEDED FOR CALCULATING DERIVATIVES.
        STORE(200,9) ARRAY TO STORE THE ZONES.

     7. THETAS   --- ALL IN RADIANS ---
        ZERTOT   TOTAL ZERO SHIFT OF THE DATA (RADIANS).
        OBSTET   OBSERVED THETA.
        SHFTET   OBSERVED THETAS, SHIFTED BY THE CALCULATED ZEROSHIFT.
        TETPT    OBSERVED THETA PLUS TOLERANCE
        TETMT    OBSERVED THETA MINUS TOLERANCE.

     8. HISYM    DATA FOR HIGH-SYMMETRY LATTICES
        ZERREF   logical which is .true. when the zero-correction
                 is to be refined.
        ISOL     THE NUMBER OF THE SOLUTION
        SYMCON(12,6) ARRAY TO STORE THE CELCONSTANTS OF THE HIGHLY
                 SYMMETRIC LATTICES. 1,2 CELCONSTANTS,3=CRYSTAL SYSTEM,
                 4=NUMBER OF LINES INDEXED,5=ZEROSHIFT, 6=VOLUME.
        NMATCH(45) ARRAY TO STORE THE NUMBER OF CALCULATED LINES THAT
                 MATCH EACH OBSERVED LINE.

     9. COUNTM
        ITL(0:5000) ARRAY TO FIND THE VALUES OF  *F*  AND  *D* .
                 IT IS NOT NECESSARY TO PUT THE ARRAY(S) IN A COMMON,
                 BUT IT SAVES SPACE.



 -----------------------------------------------------------------------
   last change  240493  added NCRT+output
   last change  061193  deleted MOST NCRT+output
   last change  080594  improved NCRT-output