1 |
C PROGRAM MAIN |
2 |
C INTEGER NLL |
3 |
C PARAMETER (NLL=3800) |
4 |
C CHARACTER*2 LL(NLL) |
5 |
C |
6 |
C INTEGER I |
7 |
C |
8 |
C CALL MAKE_DEFAULT_DLABEL_LIST( LL, NLL ) |
9 |
C |
10 |
C DO I=1, NLL |
11 |
C PRINT *, LL(I) |
12 |
C ENDDO |
13 |
C |
14 |
C |
15 |
C END |
16 |
SUBROUTINE MAKE_DEFAULT_DLABEL_LIST(LL, NLL) |
17 |
C |
18 |
C Make sequenced label list 00, 02, 03, ... 99, 0a...0Z...9a...9Z,a0...ZZ |
19 |
C to more than 99 TRACERS but without requiring more than two digit labels. |
20 |
C Sequence below allows 3800 tracers. First 99 are numbered in decimal, |
21 |
C sequence after that is from C[12]SET2 and then C[12]SET3. |
22 |
C |
23 |
C == Routine arguments == |
24 |
INTEGER NLL |
25 |
CHARACTER*2 LL(NLL) |
26 |
|
27 |
C == Local variables == |
28 |
CHARACTER*10 C1SET1 |
29 |
CHARACTER*10 C2SET1 |
30 |
|
31 |
CHARACTER*52 C1SET2 |
32 |
CHARACTER*10 C2SET2 |
33 |
|
34 |
CHARACTER*62 C1SET3 |
35 |
CHARACTER*52 C2SET3 |
36 |
|
37 |
INTEGER I, J, N, NLLMAX |
38 |
INTEGER L11, L21, L12, L22, L13, L23 |
39 |
|
40 |
C1SET1 = '0123456789' |
41 |
C2SET1 = '0123456789' |
42 |
L11 = LEN(C1SET1) |
43 |
L21 = LEN(C2SET1) |
44 |
|
45 |
C1SET2 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMONPQRSTUVWXYZ' |
46 |
C2SET2 = '0123456789' |
47 |
L12 = LEN(C1SET2) |
48 |
L22 = LEN(C2SET2) |
49 |
|
50 |
C1SET3 = |
51 |
& '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMONPQRSTUVWXYZ' |
52 |
C2SET3 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMONPQRSTUVWXYZ' |
53 |
L13 = LEN(C1SET3) |
54 |
L23 = LEN(C2SET3) |
55 |
|
56 |
C Set a default. This shouldn't show up unless there is |
57 |
C a problem where NLL is greater than L11*L21 + L12*L22 + L13*L23 |
58 |
DO I=1,NLL |
59 |
LL(I) = '--' |
60 |
ENDDO |
61 |
|
62 |
N = 0 |
63 |
DO J=1,L21 |
64 |
DO I=1,L11 |
65 |
IF ( I.NE.1 .OR. J.NE.1) THEN |
66 |
N=N+1 |
67 |
IF ( N .LE. NLL ) THEN |
68 |
LL(N)(2:2) = C1SET1(I:I) |
69 |
LL(N)(1:1) = C2SET1(J:J) |
70 |
ENDIF |
71 |
ENDIF |
72 |
ENDDO |
73 |
ENDDO |
74 |
|
75 |
DO J=1,L22 |
76 |
DO I=1,L12 |
77 |
N=N+1 |
78 |
IF ( N .LE. NLL ) THEN |
79 |
LL(N)(2:2) = C1SET2(I:I) |
80 |
LL(N)(1:1) = C2SET2(J:J) |
81 |
ENDIF |
82 |
ENDDO |
83 |
ENDDO |
84 |
|
85 |
DO J=1,L23 |
86 |
DO I=1,L13 |
87 |
N=N+1 |
88 |
IF ( N .LE. NLL ) THEN |
89 |
LL(N)(2:2) = C1SET3(I:I) |
90 |
LL(N)(1:1) = C2SET3(J:J) |
91 |
ENDIF |
92 |
ENDDO |
93 |
ENDDO |
94 |
|
95 |
RETURN |
96 |
END |