PROGRAM KEYP
C
C Program created from matthews_coef.f
C this is a template for the keyparse routines
C
C ..
C .. Local Scalars ..
INTEGER NMOL, NUMSGP, NSYM, NSYMP, HOWMANY
REAL CMATH, PER2, RO, VOLUME, WEIGHT, ULT
LOGICAL CONT, DEBUG, FLAG
CHARACTER PGNAME*10, SPGNAM*10, LONGLINE*100
C ..
C .. Local Arrays ..
REAL CELL(6), RSYM(4,4,192)
INTEGER ARRAYMISB(100)
C ..
C .. External Routines ..
EXTERNAL CCPERR, CCPFYP, CCPRCS, MEMOPARSE, PARSECELL,
+ PARSEDIAGNOSE, PARSEINT, PARSEREAL, PARSESYMM,
+ PARSEKEY, PARSENINTS, PARSEKEYARG, PARSESUBKEY
C ..
C .. Intrinsic Functions ..
INTRINSIC COS, SQRT
C ..
C .. Initialisations
NMOL = 1
NSYM = 0
CELL(1) = 0.0
CELL(2) = 0.0
CELL(3) = 0.0
CELL(4) = 90.0
CELL(5) = 90.0
CELL(6) = 90.0
WEIGHT = 0.0
DEBUG = .FALSE.
HOWMANY = 100
FLAG = .FALSE.
C
CALL CCPFYP
CALL CCPRCS(6,'Keyp','$Date: 1996/10/09 10:47:26 $')
C---- Read in data cards
C
10 CALL MEMOPARSE(.TRUE.)
C
C Check to see if a keyword is declared eg debug?
CALL PARSEKEY('DEBU', DEBUG)
C
C Parse a real e.g. Molecular weight
CALL PARSEREAL('MOLW',WEIGHT)
C
C Parse an integer eg Number of Molecules per asymmetric unit
CALL PARSEINT('NMOL',NMOL)
C
C Parse a number n of integers eg batches to miss
CALL PARSENINTS('MISB', HOWMANY, ARRAYMISB)
C
C Parse the cell Cell
CALL PARSECELL(CELL)
C
C Parse the Symm
CALL PARSESYMM(SPGNAM, NUMSGP, PGNAME, NSYM, NSYMP, RSYM)
C
C Other subroutines for standard Keywordsa
C parsereso
C parselabin
C parselabout
C
C
C Get a complicated line to parse later if need
CALL PARSEKEYARG ('BLUR', LONGLINE)
C
C Some more complex sitiuations:
C
C Parse a SUBKEY - flag becomes true if subkey matched
C DOIT = the key
C FAST = subkey
C See also Parsesubint, Parsesubreal, parsesubchar
CALL PARSESUBKEY('DOIT', 'FAST', FLAG)
C
C Test data input
C
C Parse a SUBKEY - flag becomes true if subkey matched
C DOIT = the key
C FAST = subkey
C See also Parsesubint, Parsesubreal, parsesubchar
CALL PARSESUBKEY('DOIT', 'FAST', FLAG)
C
C Test data input
C
CALL PARSEDIAGNOSE(CONT)
IF (CONT) GOTO 10
C
C---- End of input keywords
C at this point you can check to see if all the required
C keywords have been called with correct values e.g.
C
IF (CELL(1) .EQ. 0.0)
+ CALL CCPERR(1,' *** The CELL keyword has not been given ***')
IF (NSYM .EQ. 0)
+ CALL CCPERR(1,' *** The SYMM keyword has not been given ***')
IF (WEIGHT .EQ. 0.0) CALL CCPERR(1,
+ ' *** The MOLWEIGHT keyword has not been given ***')
C
C---- If everything OK start to calculate!
C the main body of your program would be here
C
CALL CCPERR(0,'Normal Termination')
END