aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/ncarutil/conran.f
blob: bc23a6cce683b99bbee58c0b63c1d9209f49e2bd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
SUBROUTINE CONRAN (XD,YD,ZD,NDP,WK,IWK,SCRARR)
C
C                                                                               
C +-----------------------------------------------------------------+           
C |                                                                 |           
C |                Copyright (C) 1986 by UCAR                       |           
C |        University Corporation for Atmospheric Research          |           
C |                    All Rights Reserved                          |           
C |                                                                 |           
C |                 NCARGRAPHICS  Version 1.00                      |           
C |                                                                 |           
C +-----------------------------------------------------------------+           
C                                                                               
C                                                                               
C
C
C    SUBROUTINE CONRAN(XD,YD,ZD,NDP,WK,IWK,SCRARR)
C    STANDARD AND SMOOTH VERSIONS OF CONRAN
C
C          DIMENSION OF  XD(NDP),YD(NDP),ZD(NDP),WK(13*NDP)
C             ARGUMENTS  IWK((27+NCP)*NDP),SCRARR(RESOLUTION**2)
C                        WHERE NCP = 4 AND RESOLUTION = 40 BY
C                        DEFAULT.
C
C       LATEST REVISION  JULY 1984
C
C              OVERVIEW  CONRAN  PERFORMS  CONTOURING  OF  IRREGULARLY
C                        DISTRIBUTED  DATA.   IT IS THE STANDARD AND
C                        SMOOTH MEMBERS OF THE CONRAN FAMILY. THIS
C                        VERSION  WILL  PLOT CONTOURS; SMOOTH THEM USING
C                        SPLINES  UNDER  TENSION (IF THE PACKAGE DASHSMTH
C                        IS LOADED); PLOT A PERIMETER OR GRID; TITLE THE
C                        PLOT; PRINT A MESSAGE GIVING THE CONTOUR INTERVALS
C                        BELOW THE MAP; PLOT THE INPUT DATA ON THE MAP;
C                        AND LABEL THE CONTOUR LINES.
C
C               PURPOSE  CONRAN  PLOTS  CONTOUR  LINES  USING  RANDOM,
C                        SPARSE  OR  IRREGULAR DATA SETS.  THE DATA IS
C                        TRIANGULATED AND THEN CONTOURED.   CONTOURING
C                        IS  PERFORMED USING INTERPOLATION OF THE TRI-
C                        ANGULATED DATA.  THERE ARE TWO METHODS OF
C                        INTERPOLATION:  C1 SURFACES AND LINEAR.
C
C                 USAGE  CALL CONRAN(XD,YD,ZD,NDP,WK,IWK,SCRARR)
C                        AN OPTION SETTING ROUTINE  CAN  ALSO  BE  IN-
C                        VOKED,  SEE  WRITEUP  BELOW.   FRAME  MUST BE
C                        CALLED BY THE USER.
C
C                        IF DIFFERENT COLORS (OR INTENSITIES) ARE TO BE
C                        USED FOR NORMAL INTENSITY, LOW INTENSITY OR
C                        TEXT OUTPUT, THEN THE VALUES IN COMMON BLOCK
C                        RANINT SHOULD BE CHANGED:
C
C                        IRANMJ  COLOR INDEX FOR NORMAL (MAJOR) INTENSITY
C                                LINES.
C                        IRANMN  COLOR INDEX FOR LOW INTENSITY LINES
C                        IRANTX  COLOR INDEX FOR TEXT (LABELS)
C
C
C             ARGUMENTS
C
C              ON INPUT  XD
C                            ARRAY OF DIMENSION NDP CONTAINING THE  X-
C                            COORDINATES OF THE DATA POINTS.
C
C                        YD
C                            ARRAY OF DIMENSION NDP CONTAINING THE  Y-
C                            COORDINATES OF THE DATA POINTS.
C
C                        ZD
C                            ARRAY OF  DIMENSION  NDP  CONTAINING  THE
C                            DATA VALUES AT THE POINTS.
C
C                        NDP
C                            NUMBER OF  DATA  POINTS  (MUST  BE  4  OR
C                            GREATER) TO BE CONTOURED.
C
C                        WK
C                            REAL WORK ARRAY  OF  DIMENSION  AT  LEAST
C                            13*NDP
C
C                        IWK
C                            INTEGER WORK ARRAY.  WHEN USING C1 SURFACES
C                            THE ARRAY MUST BE AT LEAST IWK((27+NCP)*NDP).
C                            WHEN USING LINEAR INTERPOLATION THE ARRAY
C                            MUST BE AT LEAST IWK((27+4)*NDP).
C
C                        SCRARR
C                            REAL WORK ARRAY  OF  DIMENSION  AT  LEAST
C                            (RESOLUTION**2)   WHERE   RESOLUTION   IS
C                            DESCRIBED IN THE SSZ OPTION BELOW.  RESO-
C                            LUTION IS 40 BY DEFAULT.
C
C             ON OUTPUT  ALL ARGUMENTS  REMAIN  UNCHANGED  EXCEPT  THE
C                        SCRATCH ARRAYS IWK, WK, AND SCRARR WHICH HAVE
C                        BEEN WRITTEN INTO.  IF MAKING  MULTIPLE  RUNS
C                        ON  THE SAME TRIANGULATION IWK AND WK MUST BE
C                        SAVED AND RETURNED TO THE NEXT INVOCATION  OF
C                        CONRAN.
C
C          ENTRY POINTS  CONRAN, CONDET, CONINT, CONCAL, CONLOC, CONTNG,
C                        CONDRW, CONCLS, CONSTP, CONBDN, CONTLK
C                        CONPDV, CONOP1, CONOP2, CONOP3, CONOP4,
C                        CONXCH, CONREO, CONCOM, CONCLD, CONPMM,
C                        CONGEN, CONLOD, CONECD, CONOUT, CONOT2,
C                        CONSLD, CONLCM, CONLIN, CONDSD, CONSSD
C
C         COMMON BLOCKS  CONRA1, CONRA2, CONRA3, CONRA4, CONRA5, CONRA6,
C                        CONRA7, CONRA8, CONRA9, CONR10, CONR11, CONR12,
C                        CONR13, CONR14, CONR15, CONR16, CONR17, RANINT
C                        INTPR FROM THE DASH PACKAGE
C
C                   I/O  PLOTS THE CONTOUR MAP AND, VIA  THE ERPRT77
C                        PACKAGE,  OUTPUTS  MESSAGES  TO  THE MESSAGE
C                        OUTPUT  UNIT; AT  NCAR  THIS  UNIT  IS  THE
C                        PRINTER.  THE OPTION VALUES ARE ALL LISTED ON
C                        STANDARD ERPRT77 OUTPUT UNIT; AT NCAR THIS
C                        UNIT IS THE PRINTER.
C
C             PRECISION  SINGLE
C
C      REQUIRED LIBRARY  STANDARD VERSION: DASHCHAR, WHICH AT NCAR IS
C              ROUTINES  LOADED BY DEFAULT.
C                        SMOOTH VERSION: DASHSMTH WHICH MUST BE
C                        REQUESTED AT NCAR.
C                        BOTH VERSIONS REQUIRE CONCOM, CONTERP, GRIDAL
C                        THE ERPRT77 PACKAGE, AND THE SPPS.
C
C              LANGUAGE  FORTRAN77
C
C               HISTORY
C
C             ALGORITHM  THE SPARSE DATA IS TRIANGULATED AND A VIRTUAL
C                        GRID  IS  LAID  OVER  THE  TRIANGULATED AREA.
C                        EACH VIRTUAL GRID POINT RECEIVES AN  INTERPO-
C                        LATED  VALUE.   THE  GRID IS SCANNED ONCE FOR
C                        EACH CONTOUR LEVEL AND ALL CONTOURS  AT  THAT
C                        LEVEL ARE PLOTTED.
C                        THERE ARE TWO METHODS OF INTERPOLATION. THE
C                        FIRST IS A SMOOTH DATA INTERPOLATION
C                        SCHEME BASED  ON  LAWSON'S  C1
C                        SURFACE  INTERPOLATION  ALGORITHM,  WHICH HAS
C                        BEEN REFINED  BY  HIROSHA  AKIMA.   PARTS  OF
C                        AKIMA'S  ALGORITHM  ARE USED IN THIS PACKAGE.
C                        SEE THE "REFERENCE" SECTION BELOW.
C                        THE SECOND IS A LINEAR INTERPOLATION SCHEME.
C                        WHEN DATA IS SPARSE IT IS USUALLY BETTER TO
C                        USE THE C1 INTERPOLATION.  IF YOU HAVE DENSE
C                        DATA (OVER 100 POINTS) THEN THE LINEAR
C                        INTERPOLATION WILL GIVE THE BETTER RESULTS.
C
C           PORTABILITY  ANSI FORTRAN
C
C
C             OPERATION  CALL CONRAN (XD,YD,ZD,NDP,WK,IWK,SCRARR)
C
C                        FRAME MUST BE CALLED BY THE USER.
C
C                        CONRAN HAS MANY OPTIONS, EACH OF WHICH MAY
C                        BE CHANGED BY CALLING ONE OF THE FOUR
C                        SUBROUTINES CONOP1, CONOP2, CONOP3, OR
C                        CONOP4.  THE NUMBER OF ARGUMENTS TO EACH
C                        CONOP ROUTINE IS THE SAME AS THE FINAL
C                        SUFFIX CHARACTER IN THE ROUTINE'S NAME.
C
C                        THE CONOP ROUTINES ARE CALLED BEFORE CONRAN
C                        IS CALLED, AND VALUES SET BY THESE CALLS
C                        CONTINUE TO BE IN EFFECT UNTIL THEY ARE
C                        CHANGED BY ANOTHER CALL TO A CONOP ROUTINE.
C
C                        ALL THE CONOP ROUTINES HAVE AS THEIR FIRST
C                        ARGUMENT A CHARACTER STRING TO IDENTIFY THE
C                        OPTION BEING CHANGED.  THIS IS THE ONLY
C                        ARGUMENT TO CONOP1.  CONOP2 HAS AN INTEGER
C                        SECOND ARGUMENT.  CONOP3 HAS A REAL ARRAY (OR
C                        CONSTANT) AS ITS SECOND ARGUMENT AND AN
C                        INTEGER (USUALLY THE DIMENSION OF THE
C                        ARRAY) AS ITS THIRD ARGUMENT.  CONOP4 HAS A
C                        CHARACTER STRING AS ITS SECOND ARGUMENT AND
C                        INTEGERS FOR THE THIRD AND FOURTH ARGUMENTS.
C
C                        ONLY THE FIRST TWO CHARACTERS ON EACH SIDE OF
C                        THE EQUAL SIGN ARE SCANNED.  THEREFORE ONLY 2
C                        CHARACTERS  FOR  EACH  OPTION ARE REQUIRED ON
C                        INPUT TO CONOP (I.E.  'SCA=PRI'  AND  'SC=PR'
C                        ARE EQUIVALENT.)
C
C                        REMEMBER, THERE MUST BE AT LEAST 4 DATA POINTS.
C                        THIS IS EQUAL TO  THE  DEFAULT  NUMBER OF
C                        DATA POINTS TO BE USED FOR ESTIMATION OF PAR-
C                        TIAL DERIVATIVES AT  EACH  DATA  POINT.
C                        THE ESTIMATED PARTIAL DERIVATIVES  ARE
C                        USED  FOR THE CONSTRUCTION OF THE INTERPOLAT-
C                        ING POLYNOMIAL'S COEFFICIENTS.
C
C                        LISTED BELOW ARE OPTIONS WHICH CAN ENHANCE
C                        YOUR PLOT.  AN EXAMPLE OF AN APPROPRIATE
C                        CONOP CALL IS GIVEN FOR EACH OPTION.  A
C                        COMPLETE LIST OF DEFAULT SETTINGS FOLLOWS
C                        THE LAST OPTION.
C
C               OPTIONS
C
C                   CHL  THIS FLAG DETERMINES HOW  THE  HIGH  AND  LOW
C                        CONTOUR VALUES ARE SET.  THESE CONTOUR VALUES
C                        MAY BE SET BY THE PROGRAM OR BY THE USER.  IF
C                        CHL=OFF,  THE PROGRAM EXAMINES THE USER'S IN-
C                        PUT DATA AND DETERMINES BOTH THE HIGH AND LOW
C                        VALUES.  IF CHL=ON, THE USER MUST SPECIFY THE
C                        DESIRED HIGH (HI) AND LOW (FLO) VALUES.
C                        THE DEFAULT IS CHL=OFF.
C
C                        IF PROGRAM SET:   CALL CONOP3('CHL=OFF',0.,0)
C
C                        IF USER SET:  CALL CONOP3('CHL=ON',ARRAY,2)
C                                WHERE ARRAY(1)=HI, ARRAY(2)=FLO
C
C                        NOTE: THE VALUES SUPPLIED FOR CONTOUR  INCRE-
C                        MENT  AND CONTOUR HIGH AND LOW VALUES ASSUMES
C                        THE UNSCALED DATA VALUES.  SEE THE SDC  FLAG,
C                        BELOW.
C
C                        EXAMPLE:  CALL   CONOP3('CHL=ON',ARRAY,2)
C                                  WHERE  ARRAY(1)=5020. (THE DESIRED
C                                  HIGH CONTOUR VALUE) AND ARRAY(2)=
C                                  2000 (THE DESIRED LOW CONTOUR VALUE).
C                                  THESE ARE FLOATING POINT NUMBERS.
C
C                   CIL  THIS FLAG DETERMINES HOW THE  CONTOUR  INCRE-
C                        MENT  (CINC) IS SET.  THE INCREMENT IS EITHER
C                        CALCULATED BY THE PROGRAM (CIL=OFF) USING THE
C                        RANGE  OF HIGH AND LOW VALUES FROM THE USER'S
C                        INPUT DATA, OR SET BY THE USER (CIL=ON). THE
C                        DEFAULT IS CIL=OFF.
C
C                        IF PROGRAM SET:   CALL CONOP3('CIL=OFF',0.,0)
C
C                        IF USER SET:      CALL CONOP3('CIL=ON',CINC,1)
C
C                        NOTE: BY DEFAULT,  THE  PROGRAM  WILL EXAMINE
C                        THE USER'S INPUT DATA AND DETERMINE THE CONTOUR
C                        INTERVAL (CINC)  AT SOME APPROPRIATE RANGE BETWEEN
C                        THE LEVEL OF HIGH AND LOW VALUES SUPPLIED, USUALLY
C                        GENERATING BETWEEN 15 AND 20 CONTOUR LEVELS.
C                        ELS.
C
C                        EXAMPLE:          CALL CONOP3('CIL=ON',15.,1)
C                                          WHERE  15.  REPRESENTS  THE
C                                          CONTOUR  INCREMENT  DESIRED
C                                          BY THE USER.
C
C                   CON  THIS FLAG DETERMINES HOW THE  CONTOUR  LEVELS
C                        ARE  SET.   IF  CON=ON, THE USER MUST SPECIFY
C                        THE ARRAY OF CONTOUR VALUES AND THE NUMBER OF
C                        CONTOUR LEVELS.  A  MAXIMUM OF 30 CONTOUR (NCL)
C                        LEVELS ARE PERMITTED.  IF CON=OFF,  DEFAULT
C                        VALUES  ARE  USED.  IN THIS CASE, THE PROGRAM
C                        WILL CALCULATE THE VALUES FOR THE  ARRAY  AND
C                        NCL USING INPUT DATA.  THE DEFAULT IS OFF.
C
C                        IF PROGRAM SET:   CALL CONOP3('CON=OFF',0.,0)
C
C                        IF USER SET:   CALL CONOP3('CON=ON',ARRAY,NCL)
C
C                        NOTE: THE ARRAY (ARRAY) CONTAINS THE  CONTOUR
C                        LEVELS  (FLOATING  POINT ONLY) AND NCL IS THE
C                        NUMBER OF LEVELS.  THE MAXIMUM NUMBER OF CON-
C                        TOUR LEVELS ALLOWED IS 30.  WHEN ASSIGNING
C                        THE ARRAY OF CONTOUR VALUES, THE VALUES MUST
C                        BE ORDERED FROM SMALLEST TO LARGEST.
C
C                        EXAMPLE:
C                         DATA RLIST(1),...,RLIST(5)/1.,2.,3.,10.,12./
C
C                                  CALL CONOP3('CON=ON',RLIST,5) WHERE
C                                  'RLIST' CONTAINS THE USER SPECIFIED
C                                  CONTOUR LEVELS, AND 5  IS  THE
C                                  NUMBER  OF  USER  SPECIFIED CONTOUR
C                                  LEVELS (NCL).
C
C                        WARNING ON CONTOUR OPTIONS:
C                        IT IS ILLEGAL TO USE THE CON OPTION WHEN
C                        EITHER  CIL  OR  CHL  ARE ACTIVATED.  IF
C                        THIS IS DONE, THE OPTION CALL THAT DETECTED
C                        THE ERROR WILL NOT BE EXECUTED.
C
C                   DAS  THIS  FLAG  DETERMINES  WHICH  CONTOURS   ARE
C                        REPRESENTED  BY  DASHED LINES.  THE USER SETS
C                        THE DASHED LINE PATTERN.  THE USER MAY SPECI-
C                        FY  THAT  DASHED  LINES  BE USED FOR CONTOURS
C                        WHOSE  VALUE  IS  LESS  THAN,  EQUAL  TO,  OR
C                        GREATER THAN THE DASH PATTERN BREAKPOINT (SEE
C                        THE DBP OPTION BELOW), WHICH IS ZERO BY
C                        DEFAULT.  IF DAS=OFF (THE DEFAULT VALUE), ALL
C                        SOLID LINES ARE USED.
C
C                        ALL SOLID LINES: CALL CONOP4('DAS=OFF',' ',0,0)
C
C                        IF GREATER:      CALL CONOP4('DAS=GTR',PAT,0,0)
C
C                        IF EQUAL:        CALL CONOP4('DAS=EQU',PAT,0,0)
C
C                        IF LESS:         CALL CONOP4('DAS=LSS',PAT,0,0)
C
C                        IF ALL SAME:     CALL CONOP4('DAS=ALL',PAT,0,0)
C
C                        NOTE: PAT MUST BE A TEN CHARACTER
C                        STRING WITH A DOLLAR SIGN ($) FOR SOLID AND A
C                        SINGLE QUOTE (') FOR BLANK.  RECALL THAT IN
C                        FORTRAN 77, IN A QUOTED STRING A SINGLE QUOTE
C                        IS REPRESENTED BY TWO SINGLE QUOTES ('').
C
C                        EXAMPLE:
C                          CALL CONOP4('DAS=GTR','$$$$$''$$$$',0,0)
C
C                   DBP  THIS FLAG DETERMINES  HOW  THE  DASH  PATTERN
C                        BREAK POINT (BP) IS SET.  IF DBP=ON, BP  MUST
C                        BE SET BY THE  USER  BY  SPECIFYING  BP.   IF
C                        DBP=OFF  THE  PROGRAM  WILL SET BP TO THE
C                        DEFAULT VALUE WHICH IS ZERO.
C
C                        IF PROGRAM SET:   CALL CONOP3('DBP=OFF',0.,0)
C
C                        IF USER SET:      CALL CONOP3('DBP=ON',BP,1)
C
C                        NOTE: BP IS A FLOATING POINT NUMBER WHERE THE
C                        BREAK  FOR  GTR AND LSS CONTOUR DASH PATTERNS
C                        ARE DEFINED.  BP IS ASSUMED TO BE GIVEN RELA-
C                        TIVE TO THE UNTRANSFORMED CONTOURS.
C
C                        EXAMPLE:          CALL CONOP3('DBP=ON',5.,1)
C                                          WHERE 5. IS THE USER SPECI-
C                                          FIED BREAK POINT.
C
C                   DEF  RESET FLAGS TO  DEFAULT  VALUES.   ACTIVATING
C                        THIS  OPTION  SETS  ALL  FLAGS TO THE DEFAULT
C                        VALUE.  DEF HAS NO 'ON' OF 'OFF' STATES.
C
C                        TO ACTIVATE:   CALL CONOP1('DEF')
C
C                   EXT  FLAG TO SET EXTRAPOLATION. NORMALLY ALL
C                        CONRAN VERSIONS WILL  ONLY PLOT THE BOUNDARIES
C                        OF THE CONVEX HULL DEFINED BY THE USER'S DATA.
C                        TO HAVE THE CONTOURS FILL THE RECTANGULAR
C                        AREA OF THE FRAME, SET THE EXT SWITCH ON.
C                        THE DEFAULT IS OFF.
C
C                        TO TURN ON:    CALL CONOP1('EXT=ON')
C
C                        TO TURN OFF:   CALL CONOP1('EXT=OFF')
C
C                   FMT  FLAG FOR THE FORMAT OF THE PLOTTED INPUT DATA
C                        VALUES.   IF  FMT=OFF, THE DEFAULT VALUES FOR
C                        FT, L, AND IF ARE USED.  THE  DEFAULT  VALUES
C                        ARE:
C
C                        FT = '(G10.3)'
C                        L  = 7  CHARACTERS INCLUDING THE PARENTHESES
C                        IF = 10 CHARACTERS PRINTED IN THE OUTPUT
C                             FIELD BY THE FORMAT
C
C                        IF FMT=ON, THE USER MUST SPECIFY  VALUES  FOR
C                        FT,  L,  AND  IF.   ALL USER SPECIFIED VALUES
C                        MUST BE GIVEN IN THE CORRECT FORMAT.
C
C                        IF PROGRAM SET:  CALL CONOP4('FMT=OFF',' ',0,0)
C
C                        IF USER SET:  CALL CONOP4('FMT=ON',FT,L,IF)
C
C                        NOTE: FT IS A CHARACTER STRING CONTAINING THE
C                        FORMAT.   THE  FORMAT  MUST  BE  ENCLOSED  IN
C                        PARENTHESES.  ANY  FORMAT, UP TO 10 CHARACTERS
C                        WHICH IS  ALLOWED  AT  YOUR INSTALLATION WILL BE
C                        ACCEPTED.  L IS THE NUMBER OF  CHARACTERS  IN
C                        FT.  IF IS THE LENGTH OF THE FIELD CREATED BY
C                        THE FORMAT.
C
C                        EXAMPLE:  CALL CONOP4('FMT=ON','(G30.2)',7,30)
C
C                        WARNING: CONRAN WILL NOT  TEST  FOR  A  VALID
C                        FORMAT.  THE FORMAT IS ONLY ALLOWED TO BE
C                        10 CHARACTERS LONG.
C
C                   GRI  FLAG TO DISPLAY THE GRID. GRI IS OFF BY DEFAULT.
C
C                        TO TURN ON:    CALL CONOP1('GRI=ON')
C
C                        TO TURN OFF:   CALL CONOP1('GRI=OFF')
C
C                        NOTE: IF GRI IS ON, THE VIRTUAL GRID WILL
C                        BE SUPERIMPOSED OVER THE CONTOUR PLOT.
C                        THE X AND Y TICK INTERVALS WILL BE DISPLAYED
C                        UNDER THE MAP ONLY IF PER=ON.  (SEE PER)
C
C                   INT  FLAG TO DETERMINE THE INTENSITIES OF THE CON-
C                        TOUR  LINES  AND OTHER PARTS OF THE PLOT.  IF
C                        INT=OFF,  ALL INTENSITIES ARE SET TO THE DEFAULT
C                        VALUES.  IF INT=ALL, ALL INTENSITIES ARE SET
C                        TO THE GIVEN VALUE, IVAL.  IF INT IS SET TO
C                        ONE OF THE OTHER POSSIBLE OPTIONS (MAJ, MIN,
C                        LAB OR DAT), THE INTENSITY LEVEL FOR THAT
C                        OPTION IS SET TO THE GIVEN VALUE, IVAL.
C
C                        IF PROGRAM SET:   CALL CONOP2('INT=OFF',0)
C
C                        ALL THE SAME:     CALL  CONOP2('INT=ALL',IVAL)
C
C                        MAJOR LINES:      CALL CONOP2('INT=MAJ',IVAL)
C
C                        MINOR LINES:      CALL CONOP2('INT=MIN',IVAL)
C
C                        TITLE AND MESSAGE:
C                                          CALL  CONOP2('INT=LAB',IVAL)
C
C                        DATA VALUES:      CALL  CONOP2('INT=DAT',IVAL)
C
C                        NOTE: 'INT=DAT' RELATES TO THE PLOTTED DATA
C                        VALUES AND THE PLOTTED MAXIMUMS AND MINIMUMS.
C
C                        NOTE: IVAL IS THE INTENSITY DESIRED.  FOR  AN
C                        EXPLANATION  OF THE OPTION VALUE SETTINGS SEE
C                        THE OPTN ROUTINE  IN  THE  NCAR  SYSTEM  PLOT
C                        PACKAGE DOCUMENTATION.  BRIEFLY, IVAL  VALUES
C                        RANGE FROM 0 TO 255 OR THE CHARACTER  STRINGS
C                        'LO'  AND  'HI'.   THE DEFAULT IS 'HI' EXCEPT
C                        FOR INT=MIN WHICH IS SET TO 'LO'.
C
C                        EXAMPLE:           CALL CONOP2('INT=ALL',110)
C
C                   ITP  SET THE INTERPOLATION SCHEME.
C                        THERE ARE TWO SCHEMES--C1 SURFACES AND LINEAR.
C                        THE C1 METHOD TAKES LONGER BUT WILL GIVE THE
C                        BEST RESULTS WHEN THE DATA IS SPARSE (LESS
C                        THAN 100 POINTS).  THE LINEAR METHOD WILL
C                        PRODUCE A BETTER PLOT WHEN THERE IS A DENSE
C                        DATA SET.  THE DEFAULT IS C1 SURFACE.
C
C                        FOR C1 SURFACE   CALL CONOP1('ITP=C1')
C
C                        FOR LINEAR       CALL CONOP1('ITP=LIN')
C
C                   LAB  THIS FLAG CAN BE SET TO EITHER LABEL THE CON-
C                        TOURS (LAB=ON) OR NOT (LAB=OFF).  THE DEFAULT
C                        VALUE IS LAB=ON.
C
C                        TO TURN ON:    CALL CONOP1('LAB=ON')
C
C                        TO TURN OFF:   CALL CONOP1('LAB=OFF')
C
C                   LOT  FLAG TO LIST OPTIONS ON THE PRINTER.  THE DE-
C                        FAULT  VALUE  IS  SET  TO OFF, AND NO OPTIONS
C                        WILL BE DISPLAYED.
C
C                        TO TURN ON:    CALL CONOP1('LOT=ON')
C
C                        TO TURN OFF:   CALL CONOP1('LOT=OFF')
C
C                        NOTE: IF  USERS  WANT  TO  PRINT  THE  OPTION
C                        VALUES, THEY SHOULD TURN THIS OPTION ON.  THE
C                        OPTION VALUES WILL BE SENT  TO  THE  STANDARD
C                        OUTPUT  UNIT  AS  DEFINED BY THE SUPPORT
C                        ROUTINE I1MACH.
C
C                   LSZ  THIS FLAG  DETERMINES  THE  LABEL  SIZE.   IF
C                        LSZ=OFF,  THE  DEFAULT ISZLSZ VALUE WILL BE
C                        USED.  IF LSZ=ON,  THE  USER  SHOULD  SPECIFY
C                        ISZLSZ.   THE  DEFAULT VALUE IS 9 PLOTTER
C                        ADDRESS UNITS.
C
C                        IF PROGRAM SET:   CALL CONOP2('LSZ=OFF',0)
C
C                        IF USER SET:   CALL CONOP2('LSZ=ON',ISZLSZ)
C
C                        NOTE: ISZLSZ  IS  THE  REQUESTED  CHARACTER
C                        SIZE IN PLOTTER ADDRESS UNITS.
C
C                        EXAMPLE:          CALL CONOP2('LSZ=ON',4)
C                                          WHERE 4 IS THE USER DESIRED
C                                          INTEGER PLOTTER ADDRESS
C                                          UNITS.
C
C                   MES  FLAG TO PLOT A MESSAGE. THE DEFAULT IS ON.
C
C                        TO TURN ON:    CALL CONOP1('MES=ON')
C
C                        TO TURN OFF:   CALL CONOP1('MES=OFF')
C
C                        NOTE: IF MES=ON, A MESSAGE IS  PRINTED   BELOW
C                        THE  PLOT GIVING CONTOUR INTERVALS AND EXECU-
C                        TION TIME IN SECONDS.  IF PER OR GRI ARE  ON,
C                        THE  MESSAGE  ALSO  CONTAINS THE X AND Y TICK
C                        INTERVALS.
C
C                   NCP  FLAG TO INDICATE THE NUMBER OF DATA POINTS
C                        USED FOR THE PARTIAL DERIVATIVE
C                        ESTIMATION.   IF NCP=OFF, NUM IS SET TO
C                        4, WHICH IS THE DEFAULT  VALUE.   IF  NCP=ON,
C                        THE  USER  MUST  SPECIFY  NUM GREATER THAN OR
C                        EQUAL TO 2.
C
C                        IF PROGRAM SET:   CALL CONOP2('NCP=OFF',0)
C
C                        IF USER SET:      CALL CONOP2('NCP=ON',NUM)
C
C                        NOTE: NUM = NUMBER OF DATA  POINTS  USED  FOR
C                        ESTIMATION.   CHANGING THIS VALUE EFFECTS THE
C                        CONTOURS PRODUCED AND THE SIZE OF INPUT ARRAY
C                        IWK.
C
C                        EXAMPLE:          CALL CONOP2('NCP=ON',3)
C
C                   PDV  FLAG TO PLOT THE INPUT DATA VALUES.  THE
C                        DEFAULT VALUE IS PDV=OFF.
C
C                        TO TURN ON:    CALL CONOP1('PDV=ON')
C
C                        TO TURN OFF:   CALL CONOP1('PDV=OFF')
C
C                        NOTE: IF PDV=ON, THE INPUT  DATA  VALUES  ARE
C                        PLOTTED  RELATIVE  TO  THEIR  LOCATION ON THE
C                        CONTOUR MAP.  IF YOU ONLY WISH TO SEE THE
C                        LOCATIONS  AND  NOT THE VALUES, SET PDV=ON AND
C                        CHANGE FMT TO PRODUCE AN ASTERISK (*) SUCH AS
C                        (I1).
C
C                   PER  FLAG TO SET THE PERIMETER.  THE DEFAULT VALUE
C                        IS  PER=ON,  WHICH  CAUSES  A PERIMETER TO BE
C                        DRAWN AROUND THE CONTOUR PLOT.
C
C                        TO TURN ON:    CALL CONOP1('PER=ON')
C
C                        TO TURN OFF:   CALL CONOP1('PER=OFF')
C
C                        NOTE: IF MES IS ON, THE X AND Y TICK INTERVALS
C                        WILL  BE GIVEN.  THESE ARE THE INTERVALS IN USER
C                        COORDINATES THAT EACH TICK MARK REPRESENTS.
C
C                   PMM  FLAG TO PLOT RELATIVE MINIMUMS AND MAXIMUMS.
C                        THIS FLAG IS OFF BY DEFAULT.
C
C                        TO TURN OFF:      CALL CONOP1('PMM=OFF')
C
C                        TO TURN ON:       CALL CONOP1('PMM=ON')
C
C                   PSL  FLAG WHICH SETS THE PLOT SHIELD OPTION.
C                        THE OUTLINE OF THE SHIELD WILL BE DRAWN ON
C                        THE SAME FRAME AS THE CONTOUR PLOT.
C                        BY DEFAULT THIS OPTION IS OFF.
C                        (SEE SLD OPTION).
C
C                        DRAW THE SHIELD:  CALL CONOP1('PSL=ON')
C
C                        DON'T DRAW IT:    CALL CONOP1('PSL=OFF')
C
C                   REP  FLAG INDICATING THE USE OF THE SAME DATA IN
C                        A NEW EXECUTION.  THE DEFAULT VALUE IS OFF.
C
C                        TO TURN ON:    CALL CONOP1('REP=ON')
C
C                        TO TURN OFF:   CALL CONOP1('REP=OFF')
C
C                        NOTE: IF REP=ON, THE SAME X-Y DATA AND TRIANGU-
C                        LATION  ARE  TO  BE  USED BUT IT IS ASSUMED
C                        THE USER HAS CHANGED CONTOUR VALUES OR RESOLUTION
C                        FOR THIS RUN.  SCRATCH ARRAYS WK AND IWK MUST
C                        REMAIN UNCHANGED.
C
C                   SCA  FLAG FOR SCALING OF THE PLOT ON A FRAME.
C                        THIS FLAG IS ON BY DEFAULT.
C
C                        USER SCALING:     CALL CONOP1('SCA=OFF')
C
C                        PROGRAM SCALING:  CALL CONOP1('SCA=ON')
C
C                        PRIOR WINDOW:     CALL CONOP1('SCA=PRI')
C
C                        NOTE:  WITH  SCA=OFF,  PLOTTING  INSTRUCTIONS
C                        WILL BE ISSUED USING THE USER'S INPUT COORDI-
C                        NATES, UNLESS THEY ARE TRANSFORMED VIA FX AND
C                        FY  TRANSFORMATIONS.   USERS WILL FIND AN
C                        EXTENDED DISCUSSION IN THE "INTERFACING WITH
C                        OTHER GRAPHICS ROUTINES" SECTION BELOW.  THE SCA
C                        OPTION  ASSUMES  THAT ALL INPUT DATA FALLS INTO
C                        THE CURRENT WINDOW SETTING.  WITH SCA=ON, THE
C                        ENTRY POINT WILL ESTABLISH A VIEWPORT SO THAT
C                        THE USER'S PLOT WILL FIT INTO THE  CENTER  90
C                        PERCENT OF THE FRAME.  WHEN SCA=PRI, THE
C                        PROGRAM  MAPS THE USER'S PLOT INSTRUCTIONS  INTO
C                        THE  PORTION OF THE FRAME DEFINED BY THE
C                        CURRENT NORMALIZATION TRANSFORMATION.  SCA=OFF
C                        SHOULD BE USED TO INTERFACE WITH EZMAP.
C
C                   SDC  FLAG TO DETERMINE HOW TO SCALE  THE  DATA  ON
C                        THE CONTOURS.  IF SDC=OFF, THE FLOATING POINT
C                        VALUE IS GIVEN BY SCALE.  IF SDC=ON, THE USER
C                        MAY SPECIFY SCALE.  THE DEFAULT VALUE FOR SCALE
C                        IS 1.
C
C                        IF PROGRAM SET:   CALL CONOP3('SDC=OFF',0.,0)
C
C                        IF USER SET:      CALL CONOP3('SDC=ON',SCALE,1)
C
C                        NOTE: THE DATA PLOTTED ON CONTOUR  LINES  AND
C                        THE  DATA  PLOTTED  FOR RELATIVE MINIMUMS AND
C                        MAXIMUMS WILL BE SCALED BY THE FLOATING POINT
C                        VALUE  GIVEN  BY SCALE.  TYPICAL SCALE VALUES
C                        ARE 10., 100., 1000., ETC.  THE ORIGINAL DATA
C                        VALUES ARE MULTIPLIED BY SCALE.  SCALE MUST BE
C                        A FLOATING POINT NUMBER AND IS DISPLAYED IN THE
C                        MESSAGE  (SEE  MES).
C
C                        EXAMPLE:          CALL CONOP2('SDC=ON',100.,1)
C
C                   SLD  ACTIVATE OR DEACTIVATE THE SHIELDING OPTION.
C                        WHEN THIS OPTION IS ACTIVATED,  ONLY THOSE
C                        CONTOURS WITHIN THE SHIELD ARE DRAWN. THE SHIELD
C                        IS A POLYGON SPECIFIED BY THE USER WHICH MUST
C                        BE GIVEN IN THE SAME COORDINATE RANGE AS THE
C                        THE DATA. IT MUST DEFINE ONLY ONE POLYGON.
C
C                        TO ACTIVATE THE SHIELD:
C                               CALL CONOP3('SLD=ON',ARRAY,ICSD)
C
C                        TO DEACTIVATE THE SHIELD:
C                               CALL CONOP3('SLD=OFF',0.,0)
C
C                        NOTE:  ARRAY IS A REAL ARRAY ICSD ELEMENTS LONG.
C                        THE FIRST ICSD/2 ELEMENTS ARE X COORDINATES AND
C                        THE SECOND ICSD/2 ELEMENTS ARE Y COORDINATES.
C                        ICSD IS THE LENGTH OF ENTIRE ARRAY, THE
C                        NUMBER OF (X + Y) SHIELD COORDS. THE POLYGON
C                        MUST BE CLOSED, THAT IS THE FIRST AND LAST
C                        POINTS DESCRIBING IT MUST BE THE SAME.
C
C                        EXAMPLE:       DIMENSION SHLD
C                                       DATA SHLD/ 7.,10.,10.,7.,7.,
C                                      1           7.,7.,10.,10.,7./
C                                       CALL CONOP3 (6HSLD=ON,SHLD,10)
C
C
C                   SML  FLAG TO DETERMINE THE  SIZE  OF  MINIMUM  AND
C                        MAXIMUM CONTOUR LABELS.  IF SML=OFF, THE
C                        ISZSML DEFAULT VALUE OF  15 IS  USED.
C                        IF SML=ON, THE USER MUST SPECIFY ISZSML.
C
C                        IF PROGRAM SET:   CALL CONOP2('SML=OFF',0)
C
C                        IF USER SET:  CALL CONOP2('SML=ON',ISZSML)
C
C                        NOTE: ISZSML IS AN INTEGER NUMBER WHICH  IS
C                        THE SIZE OF LABELS IN PLOTTER ADDRESS UNITS
C                        AS DEFINED IN THE SPPS ENTRY WTSTR.
C
C                        EXAMPLE:      CALL CONOP2('SML=ON',12)
C
C                   SPD  FLAG FOR THE SIZE OF THE PLOTTED  INPUT  DATA
C                        VALUES.  IF SPD=OFF, THE VALUE OF ISZSPD IS
C                        8, WHICH IS THE DEFAULT.  IF SPD=ON, THE USER
C                        MUST SPECIFY ISZSPD.
C
C                        IF PROGRAM SET:   CALL CONOP2('SPD=OFF',0)
C
C                        IF USER SET:   CALL CONOP2('SPD=ON',ISZSPD)
C
C                        NOTE: ISZSPD IS AN INTEGER NUMBER GIVING THE
C                        SIZE TO PLOT THE DATA VALUES IN PLOTTER ADDRESS
C                        UNITS AS DEFINED IN THE SPPS ENTRY WTSTR.    .
C
C                        EXAMPLE:          CALL CONOP2('SPD=ON',6)
C
C                   SSZ  FLAG TO DETERMINE THE RESOLUTION  (NUMBER  OF
C                        STEPS  IN  EACH  DIRECTION).   IF SSZ=ON, THE
C                        USER SETS ISTEP, OR, IF SSZ=OFF, THE  PROGRAM
C                        WILL  AUTOMATICALLY  SET ISTEP AT THE DEFAULT
C                        VALUE OF 40.
C
C                        IF PROGRAM SET:   CALL CONOP2('SSZ=OFF',0)
C
C                        IF USER SET:      CALL CONOP2('SSZ=ON',ISTEP)
C
C                        NOTE: ISTEP IS AN INTEGER SPECIFYING THE DENSITY
C                        OF THE VIRTUAL GRID. IN MOST CASES, THE DEFAULT
C                        VALUE OF 40 PRODUCES PLEASING CONTOURS.   FOR
C                        COARSER   BUT  QUICKER  CONTOURS,  LOWER  THE
C                        VALUE.  FOR SMOOTHER CONTOURS AT
C                        THE EXPENSE OF TAKING LONGER  TIME,  RAISE
C                        THE  VALUE.   NOTE:   FOR  STEP SIZES GREATER
C                        THAN 200 IN CONRAN, THE ARRAYS  PV  IN  COMMON
C                        CONRA1  AND ITLOC IN COMMON CONRA9,  MUST BE
C                        EXPANDED TO ABOUT 10 MORE THAN ISTEP.
C                        SEE CONRA1 AND CONRA9 COMMENTS BELOW FOR MORE
C                        INFORMATION.
C
C                        EXAMPLE:          CALL    CONOP2('SSZ=ON',25)
C                                          THIS  ISTEP VALUE WILL PRO-
C                                          DUCE A COARSE CONTOUR.
C
C                   STL  FLAG TO DETERMINE  THE  SIZE  OF  THE  TITLE.
C                        ISZSTL  MAY BE SET BY THE USER (STL=ON), OR
C                        THE PROGRAM WILL SET IT TO THE  DEFAULT  SIZE
C                        OF 16 PLOTTER ADDRESS UNITS (STL=OFF).
C
C                        IF PROGRAM SET:   CALL CONOP2('STL=OFF',0)
C
C                        IF USER SET:  CALL  CONOP2('STL=ON',ISZSTL)
C
C                        NOTE: WHEN 30 OR 40 CHARACTERS ARE  USED  FOR
C                        THE TITLE, THE DEFAULT SIZE OF 16 PLOTTER
C                        ADDRESS UNITS WORKS WELL.  FOR LONGER TITLES,
C                        A SMALLER TITLE SIZE IS REQUIRED.
C
C                        EXAMPLE:          CALL CONOP2('STL=ON',13)
C
C                   TEN  FLAG TO DETERMINE THE TENSION FACTOR  APPLIED
C                        WHEN  SMOOTHING  CONTOUR LINES.  THE USER MAY
C                        SET TENS OR ALLOW  THE  PROGRAM  TO  SET  THE
C                        VALUE.   IF  USER SET, TENS MUST HAVE A VALUE
C                        GREATER THAN ZERO AND LESS THAN OR  EQUAL  TO
C                        30.  THE DEFAULT VALUE IS 2.5.
C
C                        IF PROGRAM SET:   CALL CONOP3('TEN=OFF',0.,0)
C
C                        IF USER SET:      CALL CONOP3('TEN=ON',TENS,1)
C
C                        NOTE: TENS IS NOT AVAILABLE IN THE STANDARD
C                        VERSION OF CONRAN.
C                        SMOOTHING OF CONTOUR  LINES  IS  ACCOMPLISHED
C                        WITH  SPLINES  UNDER  TENSION.  TO ADJUST THE
C                        AMOUNT OF SMOOTHING APPLIED, ADJUST THE  TEN-
C                        SION  FACTOR.   SETTING TENS VERY LARGE
C                        (I.E. 30.), EFFECTIVELY SHUTS OFF SMOOTHING.
C
C                        EXAMPLE:          CALL CONOP3('TEN=ON',14.,1)
C
C                   TFR  FLAG TO ADVANCE THE FRAME BEFORE TRIANGULATION.
C                        THE DEFAULT VALUE IS TFR=ON, WHICH MEANS THAT
C                        THE CONTOURS AND THE TRIANGLES WILL BE PLOTTED
C                        ON SEPARATE FRAMES.
C
C                        IF PROGRAM SET:   CALL CONOP1('TFR=ON')
C
C                        TO TURN OFF:      CALL CONOP1('TFR=OFF')
C
C                        NOTE: TRIANGLES ARE PLOTTED  AFTER  THE  CON-
C                        TOURING  IS COMPLETED.  TO SEE THE TRIANGLES
C                        OVER  THE  CONTOURS,  TURN THIS SWITCH OFF.
C
C                   TLE  FLAG TO PLACE A TITLE AT THE TOP OF THE PLOT.
C                        IF  TLE=ON,  THE USER MUST SPECIFY CHARS AND
C                        INUM.  CHARS  IS THE CHARACTER STRING CONTAINING
C                        THE TITLE.  INUM IS THE NUMBER OF CHARACTERS
C                        IN CHARS.  THE DEFAULT VALUE IS  OFF.
C
C                        TO TURN ON: CALL CONOP4('TLE=ON',CHARS,INUM,0)
C
C                        TO TURN OFF:   CALL CONOP4('TLE=OFF',' ',0,0)
C
C                        NOTE: IF LONGER THAN 64-CHARACTER TITLES ARE
C                        DESIRED, THE CHARACTER VARIABLE ISTRNG FOUND
C                        IN CONRA7 MUST BE INCREASED APPROPRIATELY.
C
C                        EXAMPLE: CALL CONOP4('TLE=ON','VECTOR REVIEW'
C                                       ,13,0)
C
C                   TOP  FLAG TO PLOT ONLY THE TRIANGLES.
C
C                        TO TURN OFF:   CALL CONOP1('TOP=OFF')
C
C                        TO TURN ON:    CALL CONOP1('TOP=ON')
C
C                        NOTE: THE USER MAY WISH TO OVERLAY THE TRIAN-
C                        GLES ON SOME OTHER PLOT.  'TOP=ON' WILL
C                        ALLOW  THAT.   THIS  OPTION  WHEN   ACTIVATED
C                        (TOP=ON),  WILL  SET TRI=ON, AND TFR=OFF.  IF
C                        THE USER WANTS TFR=ON, IT SHOULD BE SET AFTER
C                        TOP IS SET.  IF THE USER SETS TOP=OFF IT WILL
C                        SET TRI=OFF AND TFR=ON. IF THE USER WANTS TRI
C                        OR  TFR  DIFFERENT, SET THEM AFTER THE
C                        TOP CALL.
C
C                   TRI  FLAG TO PLOT THE TRIANGULATION.  THE DEFAULT IS
C                        OFF AND THEREFORE THE TRIANGLES ARE NOT DRAWN.
C
C                        TO TURN ON:    CALL CONOP1('TRI=ON')
C
C                        TO TURN OFF:   CALL CONOP1('TRI=OFF')
C
C                        NOTE: PLOTTING THE TRIANGLES WILL INDICATE TO
C                        THE  USER WHERE GOOD AND BAD POINTS OF INTER-
C                        POLATION ARE OCCURRING IN  THE  CONTOUR  MAP.
C                        EQUILATERAL  TRIANGLES ARE OPTIMAL FOR INTER-
C                        POLATION.  QUALITY DEGRADES AS TRIANGLES
C                        APPROACH  A  LONG AND NARROW SHAPE.  THE CONVEX
C                        HULL OF THE  TRIANGULATION  IS  ALSO  A  POOR
C                        POINT OF INTERPOLATION.
C
C        OPTION DEFAULT  BELOW ARE  LISTED  THE  DEFAULT
C                VALUES  VALUES  FOR  THE VARIOUS OPTIONS GIVEN ABOVE.
C                        UNLESS THE USER  SPECIFIES  OTHERWISE,  THESE
C                        VALUES WILL BE USED IN EXECUTION OF THE VARI-
C                        OUS OPTIONS.
C
C                           CHL=OFF  LOT=OFF  SLD=OFF
C                           CIL=OFF  LSZ=OFF  SML=OFF
C                           CON=OFF  MES=ON   SPD=OFF
C                           DAS=OFF  NCP=OFF  SPT=OFF
C                           DBP=OFF  PDV=OFF  SSZ=OFF
C                           EXT=OFF  PER=ON   STL=OFF
C                           FMT=OFF  PMM=OFF  TEN=OFF
C                           GRI=OFF  REP=OFF  TFR=ON
C                           ITP=C1   SCA=ON   TOP=OFF
C                           LAB=ON   SDC=OFF  TRI=OFF
C
C    DEFAULT VALUES FOR  THE OPTION DEFAULT  VALUES  GIVEN  ABOVE,  IF
C        USER SPECIFIED  USED, WILL SET DEFAULT VALUES FOR THE FOLLOW-
C            PARAMETERS  ING PARAMETERS:
C
C                        PARAMETER    DEFAULT
C                        ---------    -------
C
C                        ARRAY        UP TO 30 CONTOUR LEVELS ALLOWED.
C                                     VALUES  ARE COMPUTED BY THE
C                                     PROGRAM, BASED ON INPUT.
C
C                        BP           0.
C
C                        CINC         COMPUTED BY THE PROGRAM BASED ON THE
C                                     RANGE OF HI AND LO VALUES OF THE
C                                     INPUT DATA.
C
C                        FLO          COMPUTED BY THE PROGRAM BASED ON THE
C                                     LOWEST UNSCALED INPUT DATA.
C
C                        FT           (G10.3)  PARENTHESES MUST BE
C                                     INCLUDED.
C
C                        HI           COMPUTED BY THE PROGRAM BASED ON THE
C                                     HIGHEST UNSCALED INPUT DATA.
C
C                        CHARS        NO TITLE
C
C                        IF           10 CHARACTERS
C
C                        INUM         NO TITLE
C
C                        IPAT         '$$$$$$$$$$'  (THIS IS A 10 CHARACTER
C                                     STRING.)
C
C                        ISZLSZ       9 PLOTTER ADDRESS UNITS
C
C                        ISZSML       15 PLOTTER ADDRESS UNITS
C
C                        ISZSPD       8 PLOTTER ADDRESS UNITS
C
C                        ISZSTL       16 PLOTTER ADDRESS UNITS
C
C                        ISTEP        40
C
C                        IVAL         'HI' FOR ALL EXCEPT  MINOR  CON-
C                                     TOUR   LINES   WHICH  ARE  'LO'.
C
C                        L            7  CHARACTERS  (INCLUDING   BOTH
C                                     PARENTHESES)
C
C                        NCL          COMPUTED BY THE PROGRAM BASED ON
C                                     INPUT DATA.  UP TO 30 CONTOUR
C                                     LEVELS ARE PERMITTED.
C
C                        NUM          4 DATA POINTS
C
C                        SCALE        1. (NO SCALING PERFORMED)
C
C                        TENS         2.5
C
C                        ICSD         0 (NO SHIELD)
C
C         OPTIONS WHICH  THE SHAPE OF THE CONTOURS MAY BE MODIFIED BY
C            EFFECT THE  CHANGING NCP  AND SSZ.  NCP CONTROLS THE
C              CONTOURS  NUMBER OF DATA POINTS TO BE USED IN THE
C                        INTERPOLATION.  INCREASING NCP CAUSES MORE
C                        OF THE  SURROUNDING  DATA  TO INFLUENCE THE
C                        POINT OF INTERPOLATION.  SOME  DATASETS CAUSE
C                        DIFFICULTY  WHEN  TRYING  TO PRODUCE MEANINGFUL
C                        CONTOURS (TRIANGLES WHICH ARE LONG AND  NARROW).
C                        BY MODIFYING NCP A USER CAN FINE-TUNE A
C                        PLOT.   INCREASING  ISTEP, THE DENSITY OF THE
C                        VIRTUAL GRID, WILL  SMOOTH OUT THE CONTOUR
C                        LINES AND PICK UP  MORE  DETAIL  (NEW  CONTOURS
C                        WILL APPEAR AS ISTEP INCREASES AND OLD ONES WILL
C                        SOMETIMES BREAK INTO MORE  DISTINCT UNITS).
C                        ISTEP IS CHANGED BY THE SSD OPTION.
C
C                  NOTE  IF NCP.GT.25, ARRAYS DSQ0 AND IPC0 IN CONDET
C                        MUST  BE ADJUSTED ACCORDINGLY.  ALSO NCPSZ IN
C                        CONBDN (25 BY DEFAULT), MUST BE INCREASED TO
C                        NCP.   THE  DEFAULT  VALUE OF NCP, WHICH IS 4,
C                        PRODUCES PLEASING  PICTURES  IN  MOST  CASES.
C                        HOWEVER, FINE-TUNING OF THE INTERPOLATION CAN
C                        BE OBTAINED BY INCREASING THE  SIZE  OF  NCP,
C                        WITH  A CORRESPONDING LINEAR INCREASE IN WORK
C                        SPACE.
C
C                        THE INTERPOLATION METHOD USED WILL ALSO CAUSE
C                        DIFFERENT LOOKING CONTOURS.  THE C1 METHOD
C                        IS RECOMMENDED WHEN THE DATA IS SPARSE.  IT
C                        WILL SMOOTH THE DATA AND ADD TRENDS (FALSE
C                        HILLS AND VALLEYS).  THE LINEAR METHOD IS
C                        RECOMMENDED WHEN DATA IS DENSE (GT 50 TO 100)
C                        IT WILL NOT SMOOTH THE DATA OR ADD TRENDS.
C
C      INTERFACING WITH  NORMALLY THE SCALING FACTOR WILL BE SET TO OFF.
C        OTHER GRAPHICS  IN MOST CASES MAPPING CAN BE PERFORMED BEFORE
C              ROUTINES  CALLING THE CONRAN ENTRY POINT, THUS SAVING THE
C                        USER FROM  MODIFYING THE FILE.  IF REASONABLE
C                        RESULTS CANNOT BE OBTAINED, THE STATEMENT
C                        FUNCTIONS, FX AND FY, WILL HAVE TO BE REPLACED.
C                        THE ROUTINES HAVING THESE STATEMENT FUNCTIONS
C                        ARE:
C
C                           CONDRW, CONPDV, CONTLK, CONPMS, CONGEN
C
C            REFERENCES  AKIMA, HIROSHA
C                           A METHOD OF BIVARIATE INTERPOLATION AND
C                           SMOOTH SURFACE FITTING FOR IRREGULARLY
C                           DISTRIBUTED DATA POINTS.
C                           ACM TRANSACTIONS ON MATHEMATICAL SOFTWARE
C                           VOL 4, NO. 2, JUNE 1978, PAGES 148-159
C                        LAWSON, C.L.
C                           SOFTWARE FOR C1 SURFACE INTERPOLATION
C                           JPL PUBLICATION 77-30
C                           AUGUST 15, 1977
C
C     CONRAN ERROR  ERROR  ROUTINE               MESSAGE
C       MESSAGES
C                    1      CONRAN         INPUT PARAMETER NDP LT NCP
C                    2      CONRAN         NCP GT MAX SIZE OR LT 2
C                    3      CONTNG         ALL COLINEAR DATA POINTS
C                    4      CONTNG         IDENTICAL INPUT DATA POINTS
C                                          FOUND
C                    5      CONOP          UNDEFINED OPTION
C                    6      CONCLS         CONSTANT INPUT FIELD
C                    7      CONOP          INCORRECT CONOP CALL USED
C                    8      CONOP          ILLEGAL USE OF CON OPTION
C                                          WITH CIL OR CHL OPTIONS
C                    9      CONOP          NUMBER OF CONTOUR LEVELS
C                                          EXCEEDS 30
C                    10     CONDRW         CONTOUR STORAGE EXHAUSTED
C                                          THIS ERROR IS TRAPPED AND
C                                          NULLIFIED BY CONRAN.  IT
C                                          SERVES TO SIGNAL THE USER
C                                          THAT A CONTOUR LEVEL MAY NOT
C                                          BE COMPLETE.
C                    11     CONSTP         ASPECT RATIO OF X AND Y
C                                          GREATER THAN 5 TO 1.
C                                          (THIS ERROR MAY CAUSE A POOR
C                                          QUALITY PLOT.  USUALLY THIS
C                                          CAN BE FIXED BY MULTIPLYING
C                                          X OR Y BY A CONSTANT FACTOR.
C                                          IF THIS SOLUTION IS
C                                          UNACCEPTABLE THEN INCREASING
C                                          SSZ TO A VERY LARGE VALUE
C                                          MAY HELP.  NOTE:  THIS CAN BE
C                                          EXPENSIVE.)
C
C                     THE ERRORS LISTED ABOVE ARE DEFINED AS RECOVERABLE
C                     ERRORS SHOULD THE USER WISH TO USE THEM IN THAT
C                     FASHION.  THE DOCUMENTATION ON THE ERPRT77 PACKAGE
C                     EXPLAINS HOW TO RECOVER FROM AN ERROR.
C
C NOTE:  THE COMMON BLOCKS LISTED INCLUDE ALL THE COMMON USED BY
C        THE ENTIRE CONRAN FAMILY.  NOT ALL MEMBERS WILL USE ALL
C        THE COMMON VARIABLES.
C
C   CONRA1
C       CL-ARRAY OF CONTOUR LEVELS
C       NCL-NUMBER OF CONTOUR LEVELS
C       OLDZ-Z VALUE OF LEFT NEIGHBOR TO CURRENT LOCATION
C       PV-ARRAY OF PREVIOUS ROW VALUES
C       HI-LARGEST CONTOUR PLOTTED
C       FLO-LOWEST CONTOUR PLOTTED
C       FINC-INCREMENT LEVEL BETWEEN EQUALLY SPACED CONTOURS
C   CONRA2
C       REPEAT-FLAG TO TRIANGULATE AND DRAW OR JUST DRAW
C       EXTRAP-PLOT DATA OUTSIDE OF CONVEX DATA HULL
C       PER-PUT PERIMETER AROUND PLOT
C       MESS-FLAG TO INDICATE MESSAGE OUTPUT
C       ISCALE-SCALING SWITCH
C       LOOK-PLOT TRIANGLES FLAG
C       PLDVLS-PLOT THE DATA VALUES FLAG
C       GRD-PLOT GRID FLAG
C       CON-USER SET OR PROGRAM SET CONTOURS FLAG
C       CINC-USER OR PROGRAM SET INCREMENT FLAG
C       CHILO-USER OR PROGRAM SET HI LOW CONTOURS
C       LABON-FLAG TO CONTROL LABELING OF CONTOURS
C       PMIMX-FLAG TO CONTROL THE PLOTTING OF MIN'S
C             AND MAX'S
C       SCALE-THE SCALE FACTOR FOR CONTOUR LINE VALUES
C             AND MIN, MAX PLOTTED VALUES
C       FRADV-ADVANCE FRAME BEFORE PLOTTING TRIANGULATION
C       EXTRI-ONLY PLOT TRIANGULATION
C       BPSIZ-BREAKPOINT SIZE FOR DASHPATTERNS
C       LISTOP-LIST OPTIONS ON UNIT6 FLAG
C   CONRA3
C       IRED-ERPRT77 RECOVERABLE ERROR FLAG
C   CONRA4
C       NCP-NUMBER OF DATA POINTS USED AT EACH POINT FOR
C           POLYNOMIAL CONSTRUCTION.
C       NCPSZ-MAX SIZE ALLOWED FOR NCP
C   CONRA5
C       NIT-FLAG TO INDICATE STATUS OF SEARCH DATA BASE
C       ITIPV-LAST TRIANGLE INTERPOLATION OCCURRED IN
C  CONRA6
C       XST-X COORDINATE START POINT FOR CONTOURING
C       YST-Y COORDINATE START POINT FOR CONTOURING
C       XED-X COORDINATE END POINT FOR CONTOURING
C       YED-Y COORDINATE END POINT FOR CONTOURING
C       STPSZ-STEP SIZE FOR X,Y CHANGE WHEN CONTOURING
C       IGRAD-NUMBER OF GRADUATIONS FOR CONTOURING (STEP SIZE)
C       IG-RESET VALUE FOR IGRAD
C       XRG-X RANGE OF COORDINATES
C       YRG-Y RANGE OF COORDINATES
C       BORD-PERCENT OF FRAME USED FOR CONTOUR PLOT
C       PXST-X PLOTTER START ADDRESS FOR CONTOURS
C       PYST-Y PLOTTER START ADDRESS FOR CONTOURS
C       PXED-X PLOTTER END ADDRESS FOR CONTOURS
C       PYED-Y PLOTTER END ADDRESS FOR CONTOURS
C       ITICK-NUMBER OF TICK MARKS FOR GRIDS AND PERIMETERS
C CONRA7
C       TITLE-SWITCH TO INDICATE IF TITLE OPTION ON OR OFF
C       ISTRNG-CHARACTER STRING CONTAINING THE TITLE
C       ICNT-CHARACTER COUNT OF ISTRNG
C       ITLSIZ-SIZE OF TITLE IN PWRIT UNITS
C CONRA8
C       IHIGH-DEFAULT INTENSITY SETTING
C       INMAJ-CONTOUR LEVEL INTENSITY FOR MAJOR LINES
C       INMIN-CONTOUR LEVEL INTENSITY FOR MINOR LINES
C       INLAB-TITLE AND MESSAGE INTENSITY
C       INDAT-DATA VALUE INTENSITY
C       FORM-THE FORMAT FOR PLOTTING THE DATA VALUES
C       LEN-THE NUMBER OF CHARACTERS IN THE FORMAT
C       IFMT-SIZE OF THE FORMAT FIELD
C       LEND-DEFAULT FORMAT LENGTH
C       IFMTD-DEFAULT FORMAT FIELD SIZE
C       ISIZEP-SIZE OF THE PLOTTED DATA VALUES
C  CONRA9
C       X-ARRAY OF X COORDINATES OF CONTOURS DRAWN AT CURRENT CONTOUR
C          LEVEL
C       Y-ARRAY OF Y COORDINATES OF CONTOURS DRAWN AT CURRENT CONTOUR
C          LEVEL
C       NP-COUNT IN X AND Y
C       MXXY-SIZE OF X AND Y
C       TR-TOP RIGHT CORNER VALUE OF CURRENT CELL
C       BR-BOTTOM RIGHT CORNER VALUE OF CURRENT CELL
C       TL-TOP LEFT CORNER VALUE OF CURRENT CELL
C       BL-BOTTOM LEFT CORNER VALUE OF CURRENT CELL
C       CONV-CURRENT CONTOUR VALUE
C       XN-X POSITION WHERE CONTOUR IS BEING DRAWN
C       YN-Y POSITION WHERE CONTOUR IS BEING DRAWN
C       ITLL-TRIANGLE WHERE TOP LEFT CORNER OF CURRENT CELL LIES
C       IBLL-TRIANGLE OF BOTTOM LEFT CORNER
C       ITRL-TRIANGLE OF TOP RIGHT CORNER
C       IBRL-TRIANGLE OF BOTTOM RIGHT CORNER
C       XC-X COORDINATE OF CURRENT CELL
C       YC-Y COORDINATE OF CURRENT CELL
C       ITLOC-IN CONJUNCTION WITH PV STORES THE TRIANGLE WHERE PV
C             VALUE CAME FROM
C CONR10
C       NT-NUMBER OF TRIANGLES GENERATED
C       NL-NUMBER OF LINE SEGMENTS
C       NTNL-NT+NL
C       JWIPT-POINTER INTO IWK WHERE WHERE TRIANGLE POINT NUMBERS
C             ARE STORED
C       JWIWL-IN IWK THE LOCATION OF A SCRATCH SPACE
C       JWIWP-IN IWK THE LOCATION OF A SCRATCH SPACE
C       JWIPL-IN IWK THE LOCATION OF END POINTS FOR BORDER LINE
C             SEGMENTS
C       IPR-IN WK THE LOCATION OF THE PARTIAL DERIVATIVES AT EACH
C           DATA POINT
C       ITPV-THE TRIANGLE WHERE THE PREVIOUS VALUE CAME FROM
C CONR11
C       NREP-NUMBER OF REPETITIONS OF DASH PATTERN BEFORE A LABEL
C       NCRT-NUMBER OF CRT UNITS FOR A DASH MARK OR BLANK
C       ISIZEL-SIZE OF CONTOUR LINE LABELS
C       NDASH-ARRAY CONTAINING THE NEGATIVE VALUED CONTOUR DASH
C             PATTERN
C       MINGAP-NUMBER OF UNLABELED LINES BETWEEN EACH LABELED ONE
C       IDASH-POSITIVE VALUED CONTOUR DASH PATTERN
C       ISIZEM-SIZE OF PLOTTED MINIMUMS AND MAXIMUMS
C       EDASH-EQUAL VALUED CONTOUR DASH PATTERN
C       TENS-DEFAULT TENSION SETTING FOR SMOOTHING
C CONR12
C       IXMAX,IYMAX-MAXIMUM X AND Y COORDINATES RELATIVE TO THE
C                 SCRATCH ARRAY, SCRARR
C       XMAX,YMAX-MAXIMUM X AND Y COORDINATES RELATIVE TO USERS
C                 COORDINATE SPACE
C CONR13
C       XVS-ARRAY OF THE X COORDINATES FOR SHIELDING
C       YVS-ARRAY OF THE Y COORDINATES FOR SHIELDING
C       IXVST-POINTER TO THE USERS X ARRAY FOR SHIELDING
C       IYVST-POINTER TO THE USERS Y ARRAY FOR SHIELDING
C       ICOUNT-COUNT OF THE SHIELD ELEMENTS
C       SPVAL-SPECIAL VALUE USED TO HALT CONTOURING AT THE SHIELD
C               BOUNDARY
C       SHIELD-LOGICAL FLAG TO SIGNAL STATUS OF SHIELDING
C       SLDPLT-LOGICAL FLAG TO INDICATE STATUS OF SHIELD PLOTTING
C CONR14
C       LINEAR-C1 LINEAR INTERPOLATING FLAG
C CONR15
C       ISTRNG-TITLE OF THE PLOT
C CONR16
C       FORM-FORMAT USED FOR DATA
C CONR17
C       NDASH-DASH PATTERN USED FOR CONTOUR LINES LESS THAN BP
C       IDASH-DASH PATTERN USED FOR CONTOUR LINES GREATER THAN BP
C       EDASH-DASH PATTERN USED FOR CONTOUR LINES EQUAL TO THE BP
C RANINT
C       IRANMJ-COLOR INDEX FOR NORMAL (MAJOR) INTENSITY LINES
C       IRANMN-COLOR INDEX FOR LOW INTENSITY LINES
C       IRANMJ-COLOR INDEX FOR TEXT (LABELS)
C
C +NOAO - Blockdata data conbdn rewritten as run time initialization
C         Variable LNGTHS not used.
C
C     EXTERNAL        CONBDN
C     DIMENSION       LNGTHS(4), HOLD(4)
      DIMENSION       HOLD(4)
C - NOAO
        CHARACTER*110   IWORK
        CHARACTER*13    ENCSCR,  ENSCRY
        CHARACTER*1     ICHAR
        CHARACTER*500   DPAT
        REAL            WIND(4),   VIEW(4),  NWIND(4), NVIEW(4)
      DIMENSION       XD(*)      ,YD(*)      ,ZD(*)      ,WK(*)      ,
     1                IWK(*)     ,SCRARR(*)
C
C
      COMMON /CONRA1/ CL(30)     ,NCL        ,OLDZ       ,PV(210)    ,
     1                FINC       ,HI         ,FLO
      COMMON /CONRA2/ REPEAT     ,EXTRAP     ,PER        ,MESS       ,
     1                ISCALE     ,LOOK       ,PLDVLS     ,GRD        ,
     2                CINC       ,CHILO      ,CON        ,LABON      ,
     3                PMIMX      ,SCALE      ,FRADV      ,EXTRI      ,
     4                BPSIZ      ,LISTOP
      COMMON /CONRA3/ IREC
      COMMON /CONRA4/ NCP        ,NCPSZ
      COMMON /CONRA5/ NIT        ,ITIPV
      COMMON /CONRA6/ XST        ,YST        ,XED        ,YED        ,
     1                STPSZ      ,IGRAD      ,IG         ,XRG        ,
     2                YRG        ,BORD       ,PXST       ,PYST       ,
     3                PXED       ,PYED       ,ITICK
      COMMON /CONRA7/ TITLE      ,ICNT   ,ITLSIZ
      COMMON /CONRA8/ IHIGH      ,INMAJ      ,INLAB      ,INDAT      ,
     1              LEN      ,IFMT       ,LEND       ,
     2                IFMTD      ,ISIZEP     ,INMIN
      COMMON /CONRA9/ ICOORD(500),NP         ,MXXY       ,TR         ,
     1                BR         ,TL         ,BL         ,CONV       ,
     2                XN         ,YN         ,ITLL       ,IBLL       ,
     3                ITRL       ,IBRL       ,XC         ,YC         ,
     4                ITLOC(210) ,JX         ,JY         ,ILOC       ,
     5                ISHFCT     ,XO         ,YO         ,IOC        ,NC
      COMMON /CONR10/ NT         ,NL         ,NTNL       ,JWIPT      ,
     1                JWIWL      ,JWIWP      ,JWIPL      ,IPR        ,
     2                ITPV
      COMMON /CONR11/ NREP       ,NCRT       ,ISIZEL     ,
     1                MINGAP     ,ISIZEM         ,
     2                TENS
      COMMON /CONR12/ IXMAX      ,IYMAX      ,XMAX       ,YMAX
      LOGICAL         REPEAT     ,EXTRAP     ,PER        ,MESS       ,
     1                LOOK       ,PLDVLS     ,GRD        ,LABON      ,
     2                PMIMX      ,FRADV      ,EXTRI      ,CINC       ,
     3                TITLE      ,LISTOP     ,CHILO      ,CON
      COMMON /CONR13/XVS(50),YVS(50),ICOUNT,SPVAL,SHIELD,
     1               SLDPLT
      LOGICAL SHIELD,SLDPLT
      COMMON /CONR14/LINEAR
      LOGICAL LINEAR
      COMMON /CONR15/ ISTRNG
        CHARACTER*64 ISTRNG
        COMMON /CONR16/ FORM
        CHARACTER*10 FORM
        COMMON /CONR17/ NDASH, IDASH, EDASH
        CHARACTER*10 NDASH, IDASH, EDASH
        COMMON /RANINT/ IRANMJ, IRANMN, IRANTX
        INTEGER OPLASF, OTXASF, LASF(13), OCOLI, OTEXCI
        SAVE
C
C
C+NOAO - Variable LNGTHS not used.
C       DATA LNGTHS(1),LNGTHS(2),LNGTHS(3),LNGTHS(4)/13,4,21,6/
C-NOAO
C
C ICONV CONVERT FORM 0-32767 TO 1-1024
C
        DATA ICONV/32/
C
C IABOVE AMOUNT TITLE IS PLACED ABOVE PLOT
C IBELOW, IBEL2 AMOUNT MESSAGE IS BELOW PLOT
C
C       DATA IABOVE,IBELOW,IBEL2/30,-30,-45/
C
C + NOAO - Label placement is improved by changed these values.  Also,
C          call the run time initialization subroutine, conbdn.
C
      iabove = 30
      ibelow = -15
      ibel2 = -30
      call conbdn
C - NOAO
C
C  THE FOLLOWING CALL IS FOR MONOTORING LIBRARY USE AT NCAR
C
      CALL Q8QST4 ('NSSL','CONRAN','CONRAN','VERSION 01')
C
C  LIST THE OPTION VALUES IF REQUESTED
C
      IF (LISTOP) CALL CONOUT (2)
C
C  SET SWITCH TO MAP TRIANGLES, IN CONLOC, FOR QUICK SEARCHES
C
      NIT = 0
C
C  TEST TO SEE IF ENOUGH INPUT DATA
C
      IF (NDP.GE.NCP) GO TO    10
      CALL SETER (' CONRAN - INPUT PARAMETER NDP LESS THAN NCP',1,
     1             IREC)
      RETURN
C
   10 IF (NCPSZ.GE.NCP .AND. NCP.GE.2) GO TO    20
      CALL SETER (' CONRAN - NCP LT 2 OR GT NCPSZ',2,IREC)
C
   20 IWK(1) = NDP
      IWK(2) = NCP
      IWK(3) = 1
C
C  SET POLYLINE COLOR ASF TO INDIVIDUAL
C
        CALL GQASF(IERR,LASF)
        OPLASF = LASF(3)
        LASF(3) = 1
        OTXASF = LASF(10)
        LASF(10) = 1
        CALL GSASF(LASF)
C
C  INQUIRE CURRENT POLYLINE AND TEXT COLOR
C
        CALL GQPLCI(IERR,OCOLI)
        CALL GQTXCI(IERR,OTEXCI)
C
C  SET POLYLINE AND TEXT COLOR TO VALUE IN COMMON
C
        CALL GSPLCI(IRANMJ)
      CALL GSTXCI(IRANTX)
C
C CONSTRUCTION OF WORK SPACE POINTERS
C
C TRIANGLE POINT NUMBERS
C
      JWIPT = 16
C
C SCRATCH SPACE
C
      JWIWL = 6*NDP + 1
C
C  END POINTS OF BORDER LINE SEGMENTS AND TRIANGLE NUMBER
C
      JWIPL = 24*NDP + 1
C
C  POINT NUMBERS WHERE THE NCP DATA POINTS AROUND EACH POINT
C
      JWIPC = 27*NDP + 1
C
C  SCRATCH SPACE
C
      JWIWP = 30*NDP + 1
C
C  PARTIAL DERIVATIVES AT EACH DATA POINT
C
      IPR = 8*NDP + 1
C
C  TEST IF REPEAT (JUST NEW CONTOURS OF INTERPOLATED DATA)
C  OR NO REPEAT (TRIANGULATE AND CONTOUR)
C
      IF (REPEAT) GO TO    30
C
C TRIANGULATES THE X-Y PLANE.
C
      CALL CONTNG (NDP,XD,YD,NT,IWK(JWIPT),NL,IWK(JWIPL),IWK(JWIWL),
     1             IWK(JWIWP),WK)
      IF (NERRO(ITEMP).NE.0) RETURN
C
      IWK(5) = NT
      IWK(6) = NL
      NTNL = NT+NL
C
C  SKIP IF NOT LINEAR INTERPOLATION
C
      IF (.NOT.LINEAR) GO TO 25
C
C  FIND THE COEFICENTS FOR LINER INTERPOLATION OF EACH TRIANGLE
C
      CALL CONLIN(XD,YD,ZD,NT,IWK(JWIPT),WK(IPR))
      GO TO 35
C
C
C DETERMINES NCP POINTS CLOSEST TO EACH DATA POINT.
C
 25   CALL CONDET (NDP,XD,YD,NCP,IWK(JWIPC))
C
C  ESTIMATE THE PARTIAL DERIVATIVES AT ALL DATA POINTS
C
      CALL CONINT (NDP,XD,YD,ZD,NCP,IWK(JWIPC),WK(IPR))
C
C  VERIFY DATA VALUES VALID
C
   30 NT = IWK(5)
      NL = IWK(6)
      NTNL = NT+NL
C
C  COMPUTE STEP SIZE FOR CONTOURING
C
 35   CALL CONSTP (XD,YD,NDP)
C
C  SAVE ORIGINAL WINDOW, VIEWPORT OF TRANSFORMATION 1, AND ORIGINAL
C  LOG SCALING FLAG.
C
        CALL GQCNTN(IER,IOLDNT)
        CALL GQNT(IOLDNT,IER,WIND,VIEW)
        RX1 = VIEW(1)
        RX2 = VIEW(2)
        RY1 = VIEW(3)
        RY2 = VIEW(4)
C  SAVE NORMALIZATION TRANSFORMATION 1
        CALL GQNT(1,IER,WIND,VIEW)
        CALL GETUSV('LS',IOLLS)
C
C  DETERMINE SCALING OPTION
C
      ISC = ISCALE+1
      GO TO (   40,   60,   50),ISC
C
C  CONRAN SETS SCALING FACTOR
C
   40 CALL SET(PXST,PXED,PYST,PYED,XST,XED,YST,YED,1)
      GO TO 60
C
C  CONRAN PLOTS WITHIN USERS BOUNDARIES
C
   50 CALL SET(RX1,RX2,RY1,RY2,XST,XED,YST,YED,1)
C
C  IF TRIANGULATION PLOT ONLY BRANCH
C
   60 IF (EXTRI) GO TO   390
C
C  GENERATE CONTOURS IF NONE SUPPLIED BY USER
C
      CALL CONCLS (ZD,NDP)
      IF (NERRO(ITEMP).NE.0) RETURN
C
C  REORDER THE CONTOUR LINES FOR CORRECT PATTERN DISPLAY
C
      MAJLNS = 0
      IF (LABON) CALL CONREO (MAJLNS)
C
C  MAKE SURE INTEGER COORDINATES IN 1-1024 RANGE
C
      CALL SETUSV('XF',10)
        CALL SETUSV('YF',10)
C
C  SET THE DASH PATTERNS TO DEFAULT IF THEY HAVE NOT BEEN SET
C
C
      IF (IDASH(1:1).NE.' ') GO TO        80
C
C  SET POSITIVE CONTOUR VALUE TO DEFAULT
C
        IDASH = '$$$$$$$$$$'
   80 IF (NDASH(1:1).NE.' ') GO TO       100
C
C  SET NEGATIVE CONTOUR DASH PATTERN TO DEFAULT
C
        NDASH = '$$$$$$$$$$'
  100 IF (EDASH(1:1).NE.' ') GO TO   120
C
C  SET EQUAL CONTOUR DASH PATTERN TO DEFAULT
C
        EDASH = '$$$$$$$$$$'
C
C  INITIALIZE THE CONTOURING DATA STRUCTURE
C
  120 IF (.NOT.EXTRAP) YST = YST+STPSZ
C
C  LOAD THE SCRATCH SPACE
C
      CALL CONLOD (XD,YD,ZD,NDP,WK,IWK,SCRARR)
C
C  PERFORM SHIELDING IF SO REQUESTED
C
      IF (SHIELD) CALL CONSLD(SCRARR)
C
C  *******************************************************
C  *                                                     *
C  * IF THE USER NEEDS TO DIVIDE THE PROGRAM UP          *
C  * THIS IS THE BREAK POINT.  ALL SUBROUTINES CALLED    *
C  * PRIOR TO THIS MESSAGE ARE NOT USED AGAIN AND        *
C  * ALL ROUTINES AFTER THIS MESSAGE ARE NOT USED        *
C  * ANY EARLIER.  NOTE THIS ONLY REFEARS TO ENTRY POINTS*
C  * WHICH ARE PART OF THE CONRAN PACKAGE.               *
C  * ALL DATA STRUCTURES AND VARIABLES MUST BE RETAINED. *
C  *******************************************************
C
C
C  PLOT RELATIVE MINIMUMS AND MAXIMUMS IF REQUESTED
C
      IF (PMIMX) CALL CONPMM (SCRARR)
C
C
      LENDAS = NREP*10
C
C  SET THE ERROR MODE TO RECOVERY FOR THE CONTOURING STORAGE ERROR
C
      CALL ENTSR (IROLD,1)
C
C  DRAW THE CONTOURS
C
      DO   250 I=1,NCL
C
          CONV = CL(I)
          IF (CONV.GE.BPSIZ) GO TO   150
C
C  SET UP NEGATIVE CONTOUR PATTERN
C
              DO   140 J=1,10
                ICHAR = NDASH(J:J)
                  DO   130 K=1,NREP
                DPAT( J+( 10*(K-1) ): J+( 10*(K-1)) ) = ICHAR
  130             CONTINUE
  140         CONTINUE
          GO TO   210
C
C  SET UP POSITIVE CONTOUR DASH PATTERN
C
  150     IF (CONV.EQ.BPSIZ) GO TO   180
              DO   170 J=1,10
                ICHAR = IDASH(J:J)
                  DO   160 K=1,NREP
                  DPAT( J+( 10*(K-1) ): J+( 10*(K-1)) ) = ICHAR
  160             CONTINUE
  170         CONTINUE
          GO TO   210
C
C  SET UP EQUAL CONTOUR DASH PATTERN
C
  180         DO   200 J=1,10
                ICHAR = EDASH(J:J)
                  DO   190 K=1,NREP
                DPAT( J+( 10*(K-1) ): J+( 10*(K-1)) ) = ICHAR
  190             CONTINUE
  200         CONTINUE
C
  210     IF (I.GT.MAJLNS) GO TO   230
C
C  SET UP MAJOR LINES
C
          CALL GSPLCI (IRANMJ)
          CALL CONECD (CONV,IWORK,NCUSED)
          NCHAR = LENDAS + NCUSED
        DPAT(LENDAS+1:NCHAR) = IWORK(1:NCUSED)
          GO TO   240
C
C  SET UP MINOR LINES
C
  230     NCHAR = 10
      CALL GSPLCI (IRANMN)
C
C  PROCESS FOR ALL CONTOURS
C
  240     CALL DASHDC (DPAT(1:NCHAR),NCRT,ISIZEL)
C
C  DRAW ALL CONTOURS AT THIS LEVEL
C
          CALL CONDRW (SCRARR)
C
C  GET NEXT CONTOUR LEVEL
C
  250     CONTINUE
C
C  CONTOURING COMPLETED CHECK FOR OPTIONAL OUTPUTS ON PLOT
C
C  FIRST SET ERROR MODE BACK TO USERS VALUE
C
      CALL RETSR (IROLD)
C
C  GET PLOT BOUNDRIES FOR TITLING AND MESSAGE POSITIONING
C
      CALL GQCNTN(IER,ICN)
        CALL GQNT(ICN,IER,NWIND,NVIEW)
        XST = NWIND(1)
        XED = NWIND(2)
        YST = NWIND(3)
        YED = NWIND(4)
        CALL GETUSV('LS',LT)
C
C  RESET POLYLINE COLOR INDEX TO MAJOR (NORMAL)
C
        CALL GSPLCI (IRANMJ)
C
C  DRAW SHIELD ON PLOT IF REQUESTED
C
      IF(SLDPLT.AND.SHIELD) CALL CONDSD
C
C  DRAW PERIMETER ARROUND PLOT IF DESIRED
C
      IF (PER) CALL PERIM (ITICK,0,ITICK,0)
C
C  DRAW GRID IF REQUESTED
C
      IF (GRD) CALL GRID (ITICK,0,ITICK,0)
C
C  PLOT THE DATA VALUES IF REQUESTED
C
      IF (.NOT.PLDVLS) GO TO   260
      CALL CONPDV (XD,YD,ZD,NDP)
C
C  OUTPUT TITLE IF REQUESTED
C
  260 IF (.NOT.TITLE) GO TO   270
        CALL GSTXCI (IRANTX)
      CALL FL2INT (XED,YED,MX,MY)
      MY = (MY/ICONV)+IABOVE
        ILAST = 64
        DO 261 I = 64,1,-1
            IF (ISTRNG(I:I) .NE. ' ')THEN
                  ILAST = I + 1
                  GOTO 262
            ENDIF
  261 CONTINUE
  262 CONTINUE
C
C  POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
C
      CALL GQCNTN(IER,ICN)
      CALL GSELNT(0)
      XC = ( NVIEW(1) + NVIEW(2)) / 2.
      YC = CPUY(MY)
      CALL WTSTR(XC,YC,ISTRNG(1:ILAST),ITLSIZ,0,0)
      CALL GSELNT(ICN)
C
C
C  OUTPUT MESSAGE IF REQUESTED
C
  270 IF (.NOT.MESS) GO TO   390
C
        CALL GSTXCI(IRANTX)
      CALL FL2INT (XST,YST,MX,MY)
      MY = (MY/ICONV)
C
C  IF PERIMETER OR GRID PUT OUT TICK INTERVAL
C
        IMSZ = 0
      IF (.NOT.PER .AND. .NOT.GRD) GO TO   300
        IWORK(1:36) = 'X INTERVAL=              Y INTERVAL='
C
C +NOAO - FTN internal writes rewritten as calls to encode.
C       WRITE(ENCSCR,'(G13.5)')XRG
C       WRITE(ENSCRY,'(G13.5)')YRG
        call encode (13, '(f13.5)', encscr, xrg)
	call encode (13, '(f13.5)', enscry, yrg)
C -NOAO
        IWORK(12:24) = ENCSCR
        IWORK(37:49) = ENSCRY
        IMSZ = 50
  300 IF (SCALE .EQ. 1.) GOTO 330
            IWORK(IMSZ:IMSZ+10) = ' SCALED BY '
C +NOAO
C           WRITE(ENCSCR,'(G13.5)')SCALE
            call encode (13, '(f13.5)', encscr, scale)
C -NOAO
            IWORK(IMSZ+11:IMSZ+23) = ENCSCR
            IMSZ = 73
  330 IF (IMSZ .NE. 0) THEN
        ILAST = IMSZ
        DO 291 I = IMSZ,1,-1
            IF (IWORK(I:I) .NE. ' ')THEN
                  ILAST = I + 1
                  GOTO 292
            ENDIF
  291 CONTINUE
  292 CONTINUE
C
C  POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
C
      CALL GQCNTN(IER,ICN)
      CALL GSELNT(0)
      XC = ( NVIEW(1) + NVIEW(2)) / 2.
      YC = CPUY(MY+IBEL2)
      CALL WTSTR(XC,YC,IWORK(1:ILAST),8,0,0)
      CALL GSELNT(ICN)
        ENDIF
C
C  PRODUCE CONTOUR INFO
C
      IWORK(1:42) = 'CONTOUR FROM              TO              '
      IWORK(43:77) = 'CONTOUR INTERVAL OF                '
      HOLD(1) = FLO
      HOLD(2) = HI
      HOLD(3) = FINC
C
C +NOAO
C       WRITE(ENCSCR,'(G13.5)')HOLD(1)
        call encode (13, '(f13.5)', encscr, hold(1))
        IWORK(13:25) = ENCSCR
C       WRITE(ENCSCR,'(G13.5)')HOLD(2)
        call encode (13, '(f13.5)', encscr, hold(2))
        IWORK(29:41) = ENCSCR
C       WRITE(ENCSCR,'(G13.5)')HOLD(3)
        call encode (13, '(f13.5)', encscr, hold(3))
        IWORK(62:74) = ENCSCR
C -NOAO
C
C  IF IRREGULAR SPACED CONTOURS MODIFY CONTOUR INTERVAL STATEMENT
C
      IF (FINC.GE.0.) GO TO   380
      NC = 62
          IWORK(NC:NC+15) = ' IRREGULAR      '
C
        ILAST = 77
  380 DO 381 I = 77,1,-1
            IF (IWORK(I:I) .NE. ' ')THEN
                  ILAST = I + 1
                  GOTO 382
            ENDIF
  381 CONTINUE
  382 CONTINUE
C
C  POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
C
      CALL GQCNTN(IER,ICN)
      CALL GSELNT(0)
      XC = ( NVIEW(1) + NVIEW(2)) / 2.
      YC = CPUY(MY+IBELOW)
      CALL WTSTR(XC,YC,IWORK(1:ILAST),8,0,0)
      CALL GSELNT(ICN)
C
C
C
C  PLOT TRIANGLES IF REQUESTED
C
  390 IF (LOOK) THEN
          CALL GSPLCI(IRANMN)
          CALL CONTLK (XD,YD,NDP,IWK(JWIPT))
          CALL GSPLCI(IRANMJ)
      ENDIF
C  RESTORE NORMALIZATION TRANSFORMATION 1 AND LOG SCALING
      IF (ISCALE .NE. 1) THEN
        CALL SET(VIEW(1),VIEW(2),VIEW(3),VIEW(4),
     -           WIND(1),WIND(2),WIND(3),WIND(4),IOLLS)
      ENDIF
C RESTORE ORIGINAL NORMALIZATION TRANSFORMATION NUMBER
      CALL GSELNT (IOLDNT)
C
C  RESTORE ORIGINAL COLOR
C
      CALL GSPLCI(OCOLI)
      CALL GSTXCI(OTEXCI)
C
C  RESTORE POLYLINE COLOR ASF TO WHAT IT WAS ON ENTRY TO GRIDAL
C
        LASF(10) = OTXASF
        LASF(3) = OPLASF
        CALL GSASF(LASF)
      RETURN
      END
      SUBROUTINE CONPMM (SCRARR)
C
C THIS ROUTINE FINDS RELATIVE MINIMUMS AND MAXIMUMS.  A RELATIVE MINIMUM
C (OR MAXIMUM) IS DEFINED TO BE THE LOWEST (OR HIGHEST) POINT WITHIN
C A CERTAIN NEIGHBORHOOD OF THE POINT.  THE NEIGHBORHOOD USED HERE
C IS + OR - IXRG IN THE X DIRECTION AND + OR - IYRG IN THE Y DIRECTION.
C
C
C
      COMMON /CONRA1/ CL(30)     ,NCL        ,OLDZ       ,PV(210)    ,
     1                FINC       ,HI         ,FLO
      COMMON /CONRA2/ REPEAT     ,EXTRAP     ,PER        ,MESS       ,
     1                ISCALE     ,LOOK       ,PLDVLS     ,GRD        ,
     2                CINC       ,CHILO      ,CON        ,LABON      ,
     3                PMIMX      ,SCALE      ,FRADV      ,EXTRI      ,
     4                BPSIZ      ,LISTOP
      COMMON /CONRA3/ IREC
      COMMON /CONRA4/ NCP        ,NCPSZ
      COMMON /CONRA5/ NIT        ,ITIPV
      COMMON /CONRA6/ XST        ,YST        ,XED        ,YED        ,
     1                STPSZ      ,IGRAD      ,IG         ,XRG        ,
     2                YRG        ,BORD       ,PXST       ,PYST       ,
     3                PXED       ,PYED       ,ITICK
      COMMON /CONRA7/ TITLE      ,ICNT   ,ITLSIZ
      COMMON /CONRA8/ IHIGH      ,INMAJ      ,INLAB      ,INDAT      ,
     1              LEN      ,IFMT       ,LEND       ,
     2                IFMTD      ,ISIZEP     ,INMIN
      COMMON /CONRA9/ ICOORD(500),NP         ,MXXY       ,TR         ,
     1                BR         ,TL         ,BL         ,CONV       ,
     2                XN         ,YN         ,ITLL       ,IBLL       ,
     3                ITRL       ,IBRL       ,XC         ,YC         ,
     4                ITLOC(210) ,JX         ,JY         ,ILOC       ,
     5                ISHFCT     ,XO         ,YO         ,IOC        ,NC
      COMMON /CONR10/ NT         ,NL         ,NTNL       ,JWIPT      ,
     1                JWIWL      ,JWIWP      ,JWIPL      ,IPR        ,
     2                ITPV
      COMMON /CONR11/ NREP       ,NCRT       ,ISIZEL     ,
     1                MINGAP     ,ISIZEM         ,
     2                TENS
      COMMON /CONR12/ IXMAX      ,IYMAX      ,XMAX       ,YMAX
      LOGICAL         REPEAT     ,EXTRAP     ,PER        ,MESS       ,
     1                LOOK       ,PLDVLS     ,GRD        ,LABON      ,
     2                PMIMX      ,FRADV      ,EXTRI      ,CINC       ,
     3                TITLE      ,LISTOP     ,CHILO      ,CON
      COMMON /CONR15/ ISTRNG
        CHARACTER*64 ISTRNG
        COMMON /CONR16/ FORM
        CHARACTER*10 FORM
        COMMON /CONR17/ NDASH, IDASH, EDASH
        CHARACTER*10 NDASH, IDASH, EDASH
C
C
C
      DIMENSION       SCRARR(*)
      CHARACTER*10    IA
      SAVE
C
C  CONVERT FROM 0-32767 TO 1-1024
C
        DATA ICONV/32/
C
C  ACCESSING FUNCTION INTO SCRARR
C
      SCRTCH(IXX,IYY) = SCRARR(IYY+(IXX-1)*IYMAX)
C
C  GRAPHICS MAPPING FUNCTIONS
C
      FX(XXX,YYY) = XXX
      FY(XXX,YYY) = YYY
C
C  MAPPING FROM INTEGER TO USER INPUT FLOATING POINT
C
      CONVX(IXX) = XST + FLOAT(IXX-1)*STPSZ
      CONVY(IYY) = YST + FLOAT(IYY-1)*STPSZ
C
C  SET INTENSITY TO HIGH
C
        IF (INDAT .NE. 1) THEN
          CALL GSTXCI (INDAT)
      ELSE
            CALL GSTXCI (IRANTX)
        ENDIF
C
C  COMPUTE THE SEARCH RANGE FOR MIN AND MAX DETERMINATION
C
      IXRG = MIN0(15,MAX0(2,IFIX(FLOAT(IXMAX)/8.)))
      IYRG = MIN0(15,MAX0(2,IFIX(FLOAT(IYMAX)/8.)))
C
C  LOOP THROUGH ALL ROWS OF THE DATA SEARCHING FOR AN IMMEDIATE MIN OR
C  MAX.
C
      IX = 1
C
C  SCAN A ROW
C
C  IF EXTRAPOLATING DONT LIMIT ROW SCANS
C
   10 IF (.NOT.EXTRAP) GO TO    20
      IYST = 1
      IYED = IYMAX
      IY = 1
      GO TO    30
C
C  NOT EXTRAPOLATING STAY IN HULL BOUNDRIES
C
   20 IYST = ITLOC(IX*2-1)
      IYED = ITLOC(IX*2)
      IF (IYST.EQ.0) GO TO   240
      IY = IYST
   30 VAL = SCRTCH(IX,IY)
C
C  SEARCH FOR A MIN
C
C
C  BRANCH IF NOT FIRST ON A ROW
C
      IF (IY.NE.IYST) GO TO    40
      IF (VAL.GE.SCRTCH(IX,IY+1)) GO TO   130
      IF (VAL.GE.SCRTCH(IX,IY+2)) GO TO   130
      GO TO    60
C
C  BRANCH IF NOT LAST ON ROW
C
   40 IF (IY.NE.IYED) GO TO    50
      IF (VAL.GE.SCRTCH(IX,IY-1)) GO TO   140
      IF (VAL.GE.SCRTCH(IX,IY-2)) GO TO   140
      GO TO    60
C
C  IN MIDDLE OF ROW
C
   50 IF (VAL.GE.SCRTCH(IX,IY+1)) GO TO   150
      IF (VAL.GE.SCRTCH(IX,IY-1)) GO TO   150
C
C  POSSIBLE MIN FOUND SEARCH NEIGHBORHOOD
C
   60 IXST = MAX0(1,IX-IXRG)
      IXSTOP = MIN0(IXMAX,IX+IXRG)
C
C IF NOT EXTRAPOLATING BRANCH
C
   70 IF (.NOT.EXTRAP) GO TO    80
      IYSRS = 1
      IYSRE = IYMAX
      GO TO    90
C
C  NOT EXTRAPOLATING STAY IN CONVEX HULL
C
   80 IYSRS = ITLOC(IXST*2-1)
      IYSRE = ITLOC(IXST*2)
      IF (IYSRS.EQ.0) GO TO   120
C
   90 IYSRS = MAX0(IYSRS,IY-IYRG)
      IYSRE = MIN0(IYSRE,IY+IYRG)
C
  100 CUR = SCRTCH(IXST,IYSRS)
      IF (VAL.LT.CUR) GO TO   110
      IF (VAL.GT.CUR) GO TO   230
      IF (IX.EQ.IXST .AND. IY.EQ.IYSRS) GO TO   110
      GO TO   230
C
C  SUCCESS SO FAR TRY NEXT SPACE
C
  110 IYSRS = IYSRS+1
      IF (IYSRS.LE.IYSRE) GO TO   100
  120 IXST = IXST+1
      IF (IXST.LE.IXSTOP) GO TO    70
C
C  SUCCESS, WE HAVE FOUND A RELATIVE MIN
C
      X = CONVX(IX)
      Y = CONVY(IY)
      X1 = FX(X,Y)
      CALL FL2INT (X1,FY(X,Y),MX,MY)
      MX = MX/ICONV
      MY = MY/ICONV
C
C  POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
C
      CALL GQCNTN(IER,ICN)
      CALL GSELNT(0)
      XC = CPUX(MX)
      YC = CPUY(MY)
      CALL WTSTR(XC,YC,'L',ISIZEM,0,0)
      CALL GSELNT(ICN)
C
      CALL CONECD (VAL,IA,NC)
      MY = MY - 2*ISIZEM
C
C  POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
C
      CALL GQCNTN(IER,ICN)
      CALL GSELNT(0)
      YC = CPUY(MY)
      CALL WTSTR(XC,YC,IA(1:NC),ISIZEM,0,0)
      CALL GSELNT(ICN)
C
      GO TO   230
C
C  SEARCH FOR A LOCAL MAXIMUM
C
C  IF FIRST LOC ON A ROW
C
  130 IF (VAL.LE.SCRTCH(IX,IY+1)) GO TO   230
      IF (VAL.LE.SCRTCH(IX,IY+2)) GO TO   230
      GO TO   160
C
C  IF LAST ON ROW
C
  140 IF (VAL.LE.SCRTCH(IX,IY-1)) GO TO   230
      IF (VAL.LE.SCRTCH(IX,IY-2)) GO TO   230
      GO TO   160
C
C  IN MIDDLE OF ROW
C
  150 IF (VAL.LE.SCRTCH(IX,IY+1)) GO TO   230
      IF (VAL.LE.SCRTCH(IX,IY-1)) GO TO   230
C
C  POSSIBLE MIN FOUND SEARCH NEIGHBORHOOD
C
  160 IXST = MAX0(1,IX-IXRG)
      IXSTOP = MIN0(IXMAX,IX+IXRG)
  170 IF (.NOT.EXTRAP) GO TO   180
      IYSRS = 1
      IYSRE = IYMAX
      GO TO   190
C
C  NOT EXTRAPOLATING STAY IN CONVEX HULL
C
  180 IYSRS = ITLOC(IXST*2-1)
      IYSRE = ITLOC(IXST*2)
      IF (IYSRS.EQ.0) GO TO   220
C
  190 IYSRS = MAX0(IYSRS,IY-IYRG)
      IYSRE = MIN0(IYSRE,IY+IYRG)
C
  200 CUR = SCRTCH(IXST,IYSRS)
      IF (VAL.GT.CUR) GO TO   210
      IF (VAL.LT.CUR) GO TO   230
      IF (IX.EQ.IXST .AND. IY.EQ.IYSRS) GO TO   210
      GO TO   230
C
C  SUCCESS SO FAR TRY NEXT SPACE
C
  210 IYSRS = IYSRS+1
      IF (IYSRS.LE.IYSRE) GO TO   200
  220 IXST = IXST+1
      IF (IXST.LE.IXSTOP) GO TO   170
C
C  SUCCESS WE HAVE A MAXIMUM
C
      X = CONVX(IX)
      Y = CONVY(IY)
      X1 = FX(X,Y)
      CALL FL2INT (X1,FY(X,Y),MX,MY)
      MX = MX/ICONV
      MY = MY/ICONV
C
C  POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
C
      CALL GQCNTN(IER,ICN)
      CALL GSELNT(0)
      XC = CPUX(MX)
      YC = CPUY(MY)
      CALL WTSTR(XC,YC,'H',ISIZEM,0,0)
      CALL GSELNT(ICN)
C
      CALL CONECD (VAL,IA,NC)
      MY = MY - 2*ISIZEM
C
C  POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
C
      CALL GQCNTN(IER,ICN)
      CALL GSELNT(0)
      YC = CPUY(MY)
      CALL WTSTR(XC,YC,IA(1:NC),ISIZEM,0,0)
      CALL GSELNT(ICN)
C
C  END OF SEARCH AT THIS LOCATION TRY NEXT
C
  230 IY = IY+1
      IF (IY.LE.IYED) GO TO    30
  240 IX = IX+1
      IF (IX.LE.IXMAX) GO TO    10
C
      CALL GSTXCI (IRANTX)
C
      RETURN
C
C******************************************************************
C*                                                                *
C*                   REVISION HISTORY                             *
C*                                                                *
C*  JUNE 1980   ADDED CONRAN TO ULIB                              *
C*  AUGUST 1980 CHANGED ACCESS CARD DOCUMENTATION                 *
C*  DECEMBER 1980 MODIFIED COMMENT CARD DOCUMENTATION             *
C*  MARCH 1983  ADDED ASPECT RATIO ERROR                          *
C*  JULY 1983  ADDED SHIELDING AND LINEAR INTERPOLATION           *
C*             REMOVED 7600 ACCESS CARDS                          *
C*  JULY 1984  CONVERTED TO STANDARD FORTRAN77 AND GKS        *
C*                                                                *
C******************************************************************
C
      END