1 SUBROUTINE NAMEW(KAND,IUNIT,NLNAME,LENNLN,VNAME,DVNAME,LENVN, 2 1 NUMVN,VDIME,COMBLK,MAXCOM,LOC) 3C 4C*** SIMULATE NAMELIST OUTPUT. 5C 6C KAND - NAMELIST DELIMITER ($ ON CDC AND VAX, & ON IBM AND OTHER) 7C (BUT CAN BE SPECIFIED TO BE ANY UNIQUE CHARACTER) 8C IUNIT - TAPE UNIT FOR WRITING NAMELIST DATA 9C NLNAME - NAMELIST NAME TO WRITE 10C LENNLN - NUMBER OF CHARACTERS IN NAMELIST NAME (DIMENSION OF NLNAME) 11C VNAME - VARIABLE NAMES FOR THIS NAMELIST (AN ARRAY) 12C DVNAME - DIMENSION OF VNAME ARRAY 13C LENVN - ARRAY WHICH DEFINES THE NUMBER OF CHARACTERS IN EACH 14C VARIABLE NAME 15C NUMVN - NUMBER OF VARIABLE NAMES DEFINED 16C VDIME - NUMBER OF CONSTANTS PERMITTED FOR EACH VARIABLE 17C (DIMENSION OF EACH VARIABLE; USE NEGATIVE FOR LOGICAL 18C VARIABLES) 19C COMBLK - STARTING LOCATION FOR RESULTS 20C (USUALLY THE FIRST LOCATION OF A COMMON BLOCK) 21C MAXCOM - MAXIMUM DIMENSION OF STORAGE ARRAY 22C (USUALLY THE LENGTH OF THE COMMON BLOCK) 23C LOC - POINTER TO STORAGE ARRAY FOR THE STARTING LOCATION 24C OF EACH INPUT VARIABLE (IF ZERO THE CONSTANT IS NOT PRINTED) 25C 26C*** NOTES - 27C 28C*** ALL INPUT STRING ARRAYS MUST BE DECLARED INTEGER 29C 30C*** ALL VARIABLES ARE ASSUMMED TO BE REAL; IF VDIME IS NEGATIVE 31C*** THE VARIABLE IS ASSUMMED TO BE LOGICAL. ALTHOUGH THE CODE IS 32C*** DESIGNED TO HANDLE INTEGERS AS WELL, THIS OPTION IS NOT 33C*** CURRENTLY USED. IT CAN BE ACTIVATED BY PASSING ANOTHER ARRAY, 34C*** VTYPE, TO DEFINE THE TYPE OF VARIABLE, WITH THE CODE 35C*** 0=LOGICAL, 1=INTEGER, OR 2=REAL; THEN REPLACE THE NAME VTYPE 36C*** WITH THE NAME VTYPE(NVN) IN THE REMAINING CODE. 37C 38C*** IF ANY ELEMENT OF ARRAY LOC IS ZERO, THAT VARIABLE WILL NOT 39C*** BE INCLUDED IN THE LISTING. 40C 41 INTEGER VNAME,DVNAME,VTYPE,VDIME,BLANK,EQUAL 42C 43 DIMENSION NLNAME(LENNLN),VNAME(DVNAME),LENVN(NUMVN), 44 1 VDIME(NUMVN),COMBLK(MAXCOM),LOC(NUMVN) 45 DIMENSION KOL(8) 46C 47 DATA BLANK / 4H / 48 DATA EQUAL / 4H= / 49C 50 WRITE(IUNIT,1030)KAND,(NLNAME(I),I=1,LENNLN) 51C 52 INDX=1 53C 54 DO 1020 NVN=1,NUMVN 55C 56 IF(NVN .GT. 1)INDX=INDX+MAXC 57C 58 MAXC=LENVN(NVN) 59C 60 DO 1000 J=1,8 61 KOL(J)=BLANK 62 1000 CONTINUE 63C 64 DO 1010 I=1,MAXC 65 KOL(I)=VNAME(I+INDX-1) 66 1010 CONTINUE 67C 68 KOL(8)=EQUAL 69C 70 KK=LOC(NVN) 71 IF(KK .LT. 1)GO TO 1020 72 JJ=IABS(VDIME(NVN)) 73C 74C ... A NEGATIVE DIMENSION MEANS LOGICAL 75C ... ELSE VARIABLE TYPE IS REAL 76C 77 IF(VDIME(NVN) .LT. 0)VTYPE=0 78 IF(VDIME(NVN) .GT. 0)VTYPE=2 79C 80 IF(VTYPE .EQ. 0)CALL FORLOG(IUNIT, KOL, COMBLK(KK), JJ) 81 IF(VTYPE .EQ. 1)CALL FORINT(IUNIT, KOL, COMBLK(KK), JJ) 82 IF(VTYPE .EQ. 2)CALL FORREA(IUNIT, KOL, COMBLK(KK), JJ) 83C 84 1020 CONTINUE 85C 86 WRITE(IUNIT,1040)KAND 87C 88 RETURN 89C 90 1030 FORMAT(1H1,8A1) 91 1040 FORMAT(1H0,A1,3HEND) 92C 93 END 94