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