aboutsummaryrefslogtreecommitdiff
path: root/doc/ports/notes_v22.st
blob: 230ab876d2d772c51e553764e56d189024725fb7 (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
Space Telescope Science Institute		iraf$local/notes.st

[ Many of the below notes and bugs have long been fixed, however the CL   ]
[ changes have yet to be fully integrated into both ST and NOAO versions, ]
[ so we'll keep them around for a little longer.  Some notes have been    ]
[ added below (in [[ ]]) where necessary/appropriate.   JJT 8-Mar-1986    ]

--------------------------------
Monday  23-DEC-1985 17:32:26.42
 
Subject: CL Changes  Nov-Dec 1985
	 (T.McGlynn, J.Travisano)

grammar.y
	- delete opnl's in procedure declarations to eliminate s/r conflicts.
	- create LP and RP for parentheses to eliminate some expressions.
	- repositioned initialization processing.
	- modified var_decls slightly.
	- if/else fixes, so don't need { if ... }.
	- better syntax error reporting in scripts: gives (correct) line number,
	  points to offending position, and continues parsing script for errors.

history.c  gram.c
	- changes to support above grammar changes

history.c  exec.c  pfiles.c  decl.c
	- changes to deal with script line numbers correctly, i.e.
	  task->t_scriptln, which is used in syntax error messages; also,
	  a fix in the skip_to() function in decl.c.

history.c
	- problem of getting a "begin" in the history when running (or parsing)
	  a procedure script was fixed.  The original command is now recorded
	  in the history (and logfile) correctly.  Unfortunately, there is
	  one case where this does not work -- when get an error parsing the
	  parameter declarations in a procedure script.

eparam.c
	- format changes for real arrays (so exponent shows up)
	- tried to fix MOVE_END problem when going across page boundaries;
	  can't seem to find the bug, so for now just print out a message that 
	  says to use NEXT_PAGE a few times instead of MOVE_END.

pfiles.c  param.c  gram.c
	- added support for '\r' and '\f', so can be used in prompt strings 
	  for better formatting control  (\f not fully supported in EPAR yet)

modes.c  decl.c  pfiles.c
	- whitespace-only filename parameters are turned into null strings;
	  so users can check null filenames easily in a script (fn != "")
	  without having to deal with whitespace.  Filenames with whitespace
	  only are not really legal anyway (?).

modes.c 
	- bug fix to prevent trashing of enumerated parameters in certain
	  instances.  

param.h
	- minor typo   'ai' --> 'ar'
 
--------------------------------
Friday  27-DEC-1985 14:47:48.01
 
Subject: CL history editor		[[ known feature ]]
 
The following is another lexmodes=yes problem:

	pl> contour img1[*:16,*:16]
		...
	pl> surface ^^
	surface img1[*:16
	Warning: ...

The get-arguments code in pkg/cl/history.c checks for comma-delimited strings.
Putting the whole argument in quotes, i.e. "img1[*:16,*:16]", and then using
^^ works fine.  (No fix/change was made.)
 
--------------------------------
Friday   3-JAN-1986 14:59:06.87
 
Subject: Local vars in CL procedure scripts
 
It is generally assumed that local variables in CL procedure scripts, i.e.
those after the "begin" statement, will be initialized by the user with 
simple assignment statements.  There is one (possibly more) case where this
assumption can cause problems.  For example,

			...
		begin
			string  buf

			if (fscan (plist, buf) != EOF) ...
			...

Here, "buf" is used before being initialized, and the result is an error
saying "Attempt to use uninitialized local variable 'buf'".  Perhaps local,
uninitialized variables should be initialized automatically by the CL, but
have done nothing to fix/change this yet; just making a note of it.
 
--------------------------------
Tuesday   7-JAN-1986 15:37:59.59
 
Subject: Miscellaneous
 
These are various notes and suggestions by IRAF users at STScI and elsewhere.
I decided to finally add them all here since they were beginning to pile up
on various scraps of paper on my desk.  Some of them are minor bugs, but most
are suggestions of some kind.  Nothing has been done with any of them in terms
of IRAF changes.  Most of the text is from mail messages or typed in verbatim 
from paper copies.  Any notes by me (JayT) are indicated in brackets [].


From ST users:

CL
   Would it be possible to put a feature into iraf whereby you say
'task=xxx', which would then set a default so that you could just 
type lpar, or an input, without having to specify which task?  
Ie, instead of having to type 'xxx.infile=etc', you could specify
the task and then just type 'infile=etc', with iraf filling in
the task name.  This would not interfere with those who like the
system as it is, but could streamline things for those of us who
like the way AIPS does things.

Integer parameters
  We have encountered another peculiar feature of IRAF.  Suppose you have a
parameter that is declared as integer in a .par file, and the user attempts
to put in a value for that integer that exceeds the range of INT*4.  The cl
fills in that parameter with the value 'indef', a character string.  When
SDAS goes to read the parameter, we get a crash because the parameter is not
in integer form.  Now, it seems that a parameter declared as an integer ought
to be an integer no matter what, not a character string.  Wouldn't it be better
to leave the parameter value unchanged from its current or default value rather
than put in this string?


From RAL users:

CL Parser
	li> ?? | words | match ':' stop+| sort | table

	does NOT work correctly, but separating the "+|" to "+ |" works okay.

Help on parameter prompt
	It is very complicated to provide additional help at the prompt for
	parameter stage especially for non-string parameters.  This facility
	is almost essential to provide a user-friendly interface. 
	For example:
		A string specified in the parameter file is output if ? is
		typed in response to a prompt or possibly even enter the help
		system.

	[NOTE: One can make the prompt quite verbose, up to something
	like 2K characters; e.g., many SDAS prompts are long and multiline.]

Range check and default display in sexagesimal
	There needs to be an option in the parameter file to cause the range
	check and default information to be output in sexagesimal.  For example,
	it is ugly to type in 12:34:56.7 and have it reappear as 12.582417.

Date type
	I think there ought to be special facilities for handling dates.  At
	present you can't enter a date all in one line (except using a
	grotty fudge involving sexagesimal, which precludes proper range
	checking), and if you enter the Y,M,D separately you can get things
	like 1985 2 30 past the range checks.


From U. of Cal/San Diego (Doug Tudhope):

lists.gcursor [and imcursor]		[[ fixed in feb release ]]
	Get syntax error line 2.  [known "feature" since CL2 grammar]

	[NOTE: doing an "lpar gcursor" activates the graphics cursor, 
	but then get an error of "EOF encountered in list parameter..."]

plot.graph task
	If only 2 points are given, only the axes are drawn, e.g.

		pl> graph STDIN
		10 10
		20 20
		<EOF>
			axes, but no line!
		pl>

images.imtranspose
	Made a transposed output file of a real 190*800 image -> 800*190
	but neither onedspec.splot nor images.implot would work on it.
	they stopped with "reserved operand fault".
	When imcopy run on transposed image, got "pixel storage file truncated".
 
--------------------------------
Tuesday   7-JAN-1986 15:51:02.98
 
Subject: pkg/softools/boot/spp/xc.c  [VMS]	[[ now in vms/boot/spp/ ]]
 
Added EXTEND_SOURCE option for calling Fortran compiler from XC.  This lets
source statements go up to column 132 (instead of 72).  One line added to
source:

fcompile() {
	...
	sp = strcpy (outbuf, F77);
+	sp = strcpy (sp, "/EXTEND");	/* Allow statement in cols 1-132 */
	if (portable)
	...
}
 
--------------------------------
Tuesday   7-JAN-1986 16:11:20.85
 
Subject: pkg/images/tv/display/deanza/*		[[ updated in march ]]
 
Deanza now works with tv/display under VMS!  All of the source files and Deanza
libraries are here.  See the README file for more detailed information.

Also changed "pkg/image/tv/display/mkpkg.com" to make the Deanza code instead
of the IIS-dependent code. 
 
--------------------------------
Wednesday   8-JAN-1986 12:21:09.73
 
Subject: pkg/imred/.../*.e		[[ fixed with new iraf$bin/ dir ]]
 
The ONEDSPEC executables are copied all over the place into IMRED.  Comments in
the mkpkg.com files say this is to use different par files for different
directories.  There's GOT to be a better way, as this eats up a lot of
diskspace (and tape as well at distribution time), which we always seem to be
running up against here.
 
--------------------------------
Friday  10-JAN-1986 15:29:37.13
 
Subject: More SDAS concerns/suggestions
 
Environment variables	[[ discussed, to be resolved ]]
	When a script task ends or a user bye's from a package, all "set"
	declarations made in the task or since the package started are
	"popped" during task restoration.  Comments in pkg/cl/exec.c indicate
	that this is for keeping the environment the same across processes.

	However, this can lead to confusion.  If a user does a "set stdgraph="
	and later bye's out of a package, stdgraph reverts back to the 
	previous value, just as any other environment variable.  The same
	thing occurs in script tasks during the restore, making it difficult
	to have global environment variables.  Putting a "keep" in scripts at
	various places can get around this to some degree, but it's sometimes
	awkward.

Process cache
	SDAS has been set up under IRAF such that the user can choose which
	version of SDAS he wants (baseline|standard|develop).  This choice
	can be made when starting the sdas package or any of its packages.
	There is a problem, however, when running a package from 'standard'
	and then running the 'develop' version when the executable is already
	out there.  When a task is invoked, it will simply use the subprocess
	already in the cache, even though it's a different executable (with
	the same IRAF logical name).

	The suggestion that came up was to do an implicit "flprcache" whenever
	there is a "bye" to a package, i.e. when all the tasks associated with
	the executable are gone.  I've looked at this a little bit and don't
	see an easy way of determining when we're bye'ing from a package which
	has tasks that are in an executable.  I imagine there's a decent amount
	of overhead associated with checking all the tasks associated with
	an executable as well.  In general, getting rid of old executables
	does make sense if they're not longer referenced, since it frees up 
	system and user resources (especially important on VMS given the
	large process and executable sizes).

Table parameters
	SDAS and CDBS now have a new type of input file, a table, which may or 
	may not have a header as well.  They have asked if it would be easy
	to add a new parameter (or two) to IRAF, i.e. a table parameter and
	possibly a table-with-header parameter.

	I don't think this is a good idea, as it is something which only
	benefits SDAS and CDBS, and does very little if anything for IRAF.
	I have encouraged the SDAS people to find an SDAS-only solution to
	this problem using existing IRAF facilities.  One simple way is to
	have tasks which use tables to have a 'type' parameter which tells
	if the input file is a table or something else.
 
--------------------------------
Tuesday  14-JAN-1986 08:48:36.11
 
Subject: doc/clintro*	[[ missing again, noao has most recent version ]]
 
Copied the TeX source for the CL User's Intro doc from Peter's directory
to the general IRAF DOC directory.
 
--------------------------------
Tuesday  14-JAN-1986 10:49:06.01
 
Subject: Size of IRAF...	[[ resolved w/ Feb release ]]
 
A concern has risen, once again, on the size of IRAF.  Garrett Jernigan
(Berkeley Space Sciences Lab) has mentioned problems finding diskspace to
handle all of IRAF.  The suggestion he made to Peter was "to split the source,
obj and executables into separate libraries for the distribution, or at least
put them into different sub-directories.  If either a tape could be generated
that only had executables, or that had the whole works, but allowed only the
required files for execution to be loaded it would be a real boon."  I guess
this means having something analagous to the bin/, src/ scheme in Unix.

I think a better solution to this is to add something to the installation docs
to describe how to load only parts of IRAF, i.e. everything, or no source,
etc., so the IRAF installer can load only the parts needed/desired.  Both Tar
and Backup can handle selective copying in some manner. 
 
--------------------------------
Tuesday  14-JAN-1986 11:37:46.40
 
Subject: CL strings
 
It is currently impossible to get the length of a string in the CL.  This
should be quite trivial to implement, but it is not.  The documentation on
"paramaters" states that p_length contains the maximum length of the string,
though in reality, saying =param.p_length simply prints the string, just as
=param does. 

There should be some way of getting the current length of a string, since it
could be used as the 'last' parameter in stridx, for getting the rest of a
string starting at column n.  ST users have continually asked me about ways to
get the current length of a string parameter (e.g., from within a CL script).

One solution is to change the meaning of some of the parameter attributes for
string parameters to something which makes more sense: 

	p_length  --  contains the current string length, updated whenever
		      the parameter is changed.
	p_max     --  contains the maximum string length

These would require changes primarily in param.c and gram.c.

Also, currently trying an =param.p_min or p_max on a string parameter results 
in an access violation.


===> Released new Public version of IRAF at STScI,  Mon Jan 13, 1986 <===

===> Sent Notes, CL changes, SDAS-related items to KPNO,  Thu Jan 16, 1986 <===

 
--------------------------------
Thursday  16-JAN-1986 13:58:15.69
 
Subject: pkg/cl/config.h
 
Changed DICTSIZE from 20000 to 25000 and STACKSIZ from 4000 to 8000, to deal
with large scripts and tasks with zillions of parameters now used at STScI
which have been causing some overflows.  The VMS CL's executable size is no
larger, since uninitialized arrays are allocated at run-time. 

Also changed NFGPROC from 4 to 3.  Originally changed in an effort to improve
performance, it's causing more problems with page-file quotas because of the
very large SDAS executables, so back it goes.
 
--------------------------------
Friday  17-JAN-1986 09:25:22.96
 
Subject: Loading packages from within procedure scripts	  [[ resolved below ]]
 
It is a known "feature" in the CL that packages cannot be loaded from within a
procedure script or from within braces.  An old-style script, like the current
IRAF package scripts, can contain statements which load packages (e.g. onedspec
loads the list and plot packages). 

Loading packages from within procedure scripts should be supported at some
point (if possible).  SDAS uses procedure scripts almost exclusively now, even
their package scripts are procedures. 

Checking into it a little bit, it appears that putting a `keep' statement in
the package script fixes this problem.  But this is not a good solution for
general interactive use.  A possible solution is to add an implicit `keep' when
a cl() call is made from a script called by a script (as in most package
scripts).  This may be the easiest solution and will require no changes to
existing package scripts. 
 
--------------------------------
Monday  20-JAN-1986 11:17:09.92
 
Subject: pkg/language/doc		[[ used Feb release instead ]]
 
A few minor changes to the help text; typos, corrections, added examples, etc.
 
--------------------------------
Monday  20-JAN-1986 16:42:18.87
 
Subject: pkg/cl/Makelib			[[ use mkpkg instead ]]
 
Corrected Makelib file to contain correct include files for CL source.
 
--------------------------------
Tuesday  21-JAN-1986 12:25:29.74
 
Subject: pkg/system/gripes.cl		[[ now in vms/hlib/ ]]
 
Changed to mail entire gripe text to IRAF development account, as in KPNO
version, and not just a message that a gripe has been made.  Also changed
to use `userid' for the From field instead of `home'.
 
--------------------------------
Tuesday  21-JAN-1986 15:37:48.27
 
Subject: pkg/cl/grammar.y
 
Added initialization code for the label list structure used for goto statements
in CL scripts.  Simply added "label1 = NULL;" statements to the three places in
the grammar where things are initialized.  The absence of this would eventually
cause access violations and other fatal side effects when goto's were used
again and again. 
 
--------------------------------
Wednesday  22-JAN-1986 09:12:46.73
 
Subject: pkg/cl/builtin.c		[[ fixed at noao too ]]
 
Two instances of
		flags != LT_PFILE;
changed to
		flags &= ~LT_PFILE;
 
--------------------------------
Friday  24-JAN-1986 08:11:29.20
 
Subject: pkg/cl/pfiles.c
 
Added line to reset parse state in certain circumstances within a script.
 
--------------------------------
Tuesday  28-JAN-1986 09:16:18.48
 
Subject: sys/fmtio/lexnum.x		[[ fixed at noao too ]]
 
A previous fix to lexdata.xi caused a bug in lexnum.x to show up, although the
relation between the two is unknown.  The stk_ip[] array in lexnum() was
declared as short; this would sometimes overflow since it was storing pointers
which could be quite large.  This showed up when a user tried to add a field in
an image header with 'hedit', resulting in an arithmetic trap.  The fix is to 
declare stk_ip[] as int instead of short. 
 
--------------------------------
Tuesday  28-JAN-1986 11:06:27.14
 
Subject: GIO and graphcap		[[ fixed in Feb release ]]
 
Setting stdgraph to tek4014 results in an "openws: illegal graphics window"
error message when running the graph task.  Using showcap to see what is
really in the graphcap entry shows that although it points back to tek4012,
all of the upper case values (X1,X2,Y1,Y2,etc) do not get set properly.
 
--------------------------------
Tuesday  28-JAN-1986 11:44:54.72
 
Subject: pkg/cl/exec.c			[[ #ifdef st stuff removed 3/11 ]]
 
Quick patch to allow packages to be loaded from within any type of script. This
fix has been #ifdef ST'd for now (ST is #define'd in config.h). Basically, when
a "cl" or "clbye" statement is encountered within a script, the package is kept
for the duration of the script task that called it. 
 
--------------------------------
Tuesday  28-JAN-1986 16:29:25.83
 
Subject: pkg/twodspec/longslit/apdefine.x	[[ fixed at noao too ]]
 
Was getting a lot of "adjustable array dimension errors" when running apdefine.
The following changes fixed them: 

	real  apdata[3, naps]	 -->  real  apdata[3, NAPS]
	real  imdata[npts]	 -->  real  imdata[ARB]

In the original code, if 'naps' or 'npts' were invalid (e.g., zero or negative)
when the arrays were declared, this error occurred. 
 
--------------------------------
Monday   3-FEB-1986 10:25:45.69
 
Subject: iraf$vms/loc.c		[[ ST tool, moved to local/ ]]
 
Threw together a quick and dirty Lines-of-Code counter to handle C, SPP,
Fortran, MACRO and Ratfor source files for IRAF.  It only counts non-blank and
non-comment lines, considering them "executable".  (NASA folks like this
software metric to see how much we're supporting.) 
 
--------------------------------
Monday   3-FEB-1986 13:00:23.77
 
Subject: pkg/twodspec/longslit/apextract.x	[[ fixed in Feb release ]]
 
Changed
	int	fopen(), ...
to
	int	open(), ...

Would result in a "bad file descriptor" error message in IRAF/VMS since open()
function was assumed to be real instead of int.
 
--------------------------------
Tuesday   4-FEB-1986 13:40:44.07
 
Subject: sys/os/zopcpr.c  [VMS Kernel]
 
Added the following initialization code before the call to ZOPNPR to prevent
error recovery problems which occurred occasionally. 

	*inchan = *outchan = XERR;
 
--------------------------------
Tuesday   4-FEB-1986 15:43:51.21
 
Subject: sys/tty/ttyputl.x	[[ see below... ]]
 
The parameter 'map_cc' in this routine is declared as 'int', but everything
that calls it (e.g. lprint, type, page, help), passes in a 'bool'.  This is
probably a bug and most certainly a possible portability problem.  I did not
change anything, but 'map_cc' should probably be treated as a 'bool' in this
routine.
 
--------------------------------
Wednesday   5-FEB-1986 13:47:01.28
 
Subject: pkg/cl/exec.c
 
In mk_startupmsg(), added redirection support for STDERR, so the iraf main will
know about it as well as STDIN and STDOUT (for STDERR, the string sent down is
" 5> $").  A low-level SPP routine used by SDAS for error logging depends on
knowing the redirection status of STDERR. 
 
--------------------------------
Wednesday   5-FEB-1986 16:30:12.55
 
Subject: sys/os/zfiopr.c  [VMS]		[[ in Feb release ]]
 
Made changes in the memory allocation strategy.  Instead of using _zmaloc and
then mapping to it, let the $crmpsc and $mgblsc system services create and map
the global memory sections.  This is a simpler and more standard way of doing
things, according to the examples in the VMS documentation.  The system service
$deltva is used to delete the sections. 

These changes were prompted by spurious errors when creating connected
subprocesses, with the following VMS error from $crmpsc: 

	SECTBLFUL, section table (process/global) is full

There is a system paramater (GBLPAGFIL) that controls this and may be too low.
However, the initial implementation of zfiopr with _zmaloc may have been
causing some troubles as well.  Memory sections may not have been fully
unmapped/deleted because of problems with memory (de)allocation in the context
of global pagefile sections.  The solution mentioned attacks this concern,
and it is better than changing system parameters in the long run.

Inter-process communication still works fine with this new implementation of
zfiopr and I haven't been able to recreate the error above, so I'm hoping it's
fixed and behaves better as far as deallocation of global pagefile sections.

Warning: DEC recommends that programs which allocate memory not mix allocation
techniques (lib$get_vm vs. $cretva/$expreg), so there still may be some strange
problems.  The full warning is in the VMS System Services manual and some notes
on it are in sys/os/zvaloc.c. 
 
--------------------------------
Wednesday  12-FEB-1986 09:07:16.44
 
Subject: sys/os/zmain.c  [VMS]
 
For interactive HOST and non-batch DETACHED processes, the error channel is now
set to the output channel explicitly.  It used to be opened as a separate
channel to the VMS SYS$ERROR.  This makes no difference within IRAF, as FIO
(and the CL) keeps track of them as separate entities.  It does, however, give
us more control over the VMS SYS$ERROR stream, for example, to redirect
SYS$ERROR to a file to get SDAS tracebacks, etc. 

Also modified to translate SYS$ERROR for the logical assignments made when a
connected subprocess (rather than assigning in/out/tt/command to "SYS$ERROR").
 
--------------------------------
Wednesday  12-FEB-1986 09:22:34.24
 
Subject: pkg/cl/eparam.c
 
A number of changes have been made:

	- bug fixes for arrays and multiline prompts, and movement in 
	  multiple pages when these things are around.
	- bug fixes for old patches - the "real" bugs have been found 
 	  and fixed.
	- enhancement for hidden parameters; now, Eparam output of hidden
	  params (when showall set in epinit) is similar to Lparam, i.e.,
	  `(name = value) prompt' and for arrays,  `(name) prompt \n values'
	- updated and added comments where appropriate (and necessary)
	- made all debugging/diagnostic code (within eparam) print at the
	  bottom of the screen, to prevent screen rolling while in eparam.
	  cldebug messages elsewhere still cause screen craziness, however.
	- a bit of code reorganizing and cleaning up

Eparam continues to get harder to debug.  Some of the changes here will
hopefully make future debugging easier.  At some point, much of this code
should probably be redesigned/rewritten (as mentioned before).
 
--------------------------------
Wednesday  12-FEB-1986 13:01:46.18
 
Subject: pkg/language/language.hd		[[ use Feb release instead ]]
 
Added entry for 'stridx', pointing at "string.hlp"
 
--------------------------------
Thursday  13-FEB-1986 13:08:00.00
 
Subject: pkg/cl/gquery.c
 
This is used by EPARAM for checking ranges and enumerated values.  Fixed some
bugs in the range message generation.  Old messages would stay around in a
static array and show up on different parameters in Eparam; modified to null
out string when no range specified.  Also did a little bit of cleanup on the
source file.
 
--------------------------------
Thursday  13-FEB-1986 13:13:01.10
 
Subject: sys/os/zxwhen.c  [VMS]
 
Changed TRACEBACK code (conditionally compiled to show VMS tracebacks rather
than recovering) to force traceback to a file as well as the terminal.  This
also gets rid of the double traceback seen when subprocesses abort.  The output
file is called ".ERROR", and will be written in the user's current directory
(if writable).
 
--------------------------------
Thursday  13-FEB-1986 17:12:52.80
 
Subject: pkg/cl/decl.c
 
Changes to deal with parameters declared in the procedure statement that are
later defined as hidden.  We print out a warning message and override the mode,
from hidden to auto.  If the user really wants a parameter hidden, it should
not be in the procedure statement, as this can screw up positional arguments. 
 
--------------------------------
Thursday  13-FEB-1986 17:54:59.57
 
Subject: abbreviations in the CL
 
This "feature" continually comes up here at ST.  A lot of people are writing
scripts here and always having problems with abbreviations.  The comments
in the abbrev() function in pkg/cl/modes.c says that only interactive (or
batch) tasks can be abbreviated, meaning tasks called from within scripts
must always be fully spelled out.

I imagine the original reason for this was to insure "good" script programming
practices at the expense of convenience.  However, when writing front ends that
use tasknames as parameters and then call lparam, eparam, etc. (e.g.,
system.mkscript), it forces the user to type the taskname in full, which makes
it inconsistent with normal interactive usage.
 
--------------------------------
Friday  14-FEB-1986 08:27:57.42
 
Subject: pkg/clpackage/clpackage.men		[[ fixed ]]
 
typo:  'utilties' --> 'utilities' for System package
 
--------------------------------
Friday  14-FEB-1986 09:35:58.21
 
Subject: package rearrangement for ST	[[ to be further resolved ]]
 
Put most of the KPNO-specific and general IRAF packages into a new package
called NOAO.  This is to avoid name conflicts and confusion with the ST
software, especially SDAS and CDBS.  The files affected are: 

		lib/clpackage.cl
	+	lib/noao.cl
		pkg/clpackage/clpackage.hd
		pkg/clpackage/clpackage.men
	+	pkg/clpackage/noao.hd
	+	pkg/clpackage/noao.men

CLPACKAGE now consists of:  sdas noao language lists softools system.
 
--------------------------------
Friday  21-FEB-1986 14:34:26.46
 
Subject: lib/clpackage.cl login.cl		[[ now vms/hlib/ ]]
 
Changed startup file and template login.cl so filewait="no" is the default.
Too many "Waiting for access to file" messages, especially on the logfiles,
which are in heavy use around here for lots of things besides what the CL
puts in them.
 
--------------------------------
Tuesday  25-FEB-1986 13:48:30.21
 
Subject: pkg/cl/builtin.c
 
clhidetask():  Removed check for tasks without parameter files.  This should
not matter when hiding a task.  The inability to hide foreign tasks prompted
this change. 
 
--------------------------------
Monday   3-MAR-1986 13:25:02.14
 
Subject: pkg/cl/eparam.c
 
Minor change in eparam to clear the bottom line before returning to the CL.
This clears the "<key> for Help" message from the command line, to avoid
confusion. 
 
--------------------------------
Thursday   6-MAR-1986 09:24:31.20
 
Subject: system package, copy and rename
 
Copy does not allow wildcard files as output, but rename does.  Thus, copy
seems to be modelled after the Unix cp whereas rename acts like the VMS task of
the same name.  This seems inconsistent and is sometimes annoying to users
here. 

Also, if the copy command cannot read the input file for some reason, the
resulting error message says that it can't create the output file (because the
call to zfmkcp fails).  This is misleading, and is due to the logic in
fio$fcopy and fmkcopy, which check only for the existence of the input file and
not whether it can be read. 


----------------------------------------------------------
Merge Notes -- NOAO Feb release 
Starting March 6, 1986  Jay Travisano

Mostly ST-specific notes, but some notes on VMS/IRAF...
----------------------------------------------------------

Read backup tape to [iraf.new...].  Will merge IRAFX changes into that and then
	backup whole thing; NOAO has made a lot more changes than we have. 

doc/vmsnotes.* --> doc/ports/*
	save old vmsnotes files, may be useful

vms/hlib/irafuser.com
	site-dependent changes; also added MYDISK job logical to deal with
	dollar signs in disk names.  Will change mkiraf.com to use MYDISK
	if can't get rid of dollar sign in home disk.  Also, reinstate
	IMDIRDISK for the IRAFTMP directory...
***
	We don't have system logical names without '$' in them and even the 
	physical names have them too (VAX cluster).  Having another system
	logical name without the '$' is not the answer here, since we have
	over 30 cluster disks.  Forcing IRAF sites to change system logicals
	is an unreasonable method to avoid the '$' (as the installation doc
	recommends).  It may be easy at NOAO but our experience here and
	at other VMS-only sites shows otherwise; system managers around here
	are even reluctant sometimes to raise users' paging file quotas, as
	it requires more pagefile space on the system disks.

	One solution to this is to have a fully supported (consistent) escape
	mechanism.  The "disk\\$newton:[irafx]" works in most cases 
	and is used currently at ST.  The MYDISK job logical for the home
	directory in the login.cl also helps out.

	A better solution perhaps is to change vfnmap/vfntrans so that 
	during logical dir translation, a check is added to see if we have
	an OS path.  If so, don't bother rescanning the string for more
	logical directories.  This would allow

		set junk = "disk$newton:[iraf.local.jay]"
		type junk$file

	and after the first translation of "junk$", it would realize that
	we've got an OS path and continue on with the "file" portion.
***

vms/hlib/libc/iraf.h
	site changes for ST; not crazy about site disk and dir names in this
	file which must be moved to sys$library.  assuming vms logicals
	will be set correctly so won't need to read this file at run-time.

vms/hlib/gripes.cl
	added subject to mail message
	use USERID instead of HOME for From field

vms/hlib/install*.com
	changed for ST; only install CL and SYSTEM package here

vms/hlib/irafemacs.com
	newer version of emacs command file, plus a few minor changes for IRAF

vms/hlib/zzsetenv.def
vms/hlib/login.cl
vms/hlib/mkpkg.inc
	setups for ST

vms/hlib/mkiraf.com
	use MYDISK job logical instead of SYS$DISK; avoids '$' garbage.

vms/os/net/zfioks.c
	turned on DECnet instead of TCP; never worked all that well, but we'll
	try it again

vms/os/zmain.c
	merged in our changes and updated comments

vms/os/zopcpr.c
	merged in old change missing from noao distribution

vms/os/zxwhen.c
	merged in new traceback handling stuff
	*NOTE*: this is currently turned ON for ST, for debugging of access
	violations and arithmetic faults.  To turn it off, #define NOTRACEBACK.

vms/os/rms.c
	(debug) references to EP2 changed to _EP2

vms/boot/spp/xc.c
	added /EXTEND qualifier for Fortran; allow statements in cols 1-132

dev/devices
	magtape entries for ST cluster

pkg/cl/tests/*
	Note in Unix notes file says this was deleted because it wasn't used 
	anymore.  In fact, it has been used here at ST for (crude) regression 
	testing when making CL changes.  Have moved these into my (Jay) 
	private directory in case they're needed in the future.

vms/boot/spp/rpp/mkpkg.com
	DCL syntax errors in "if f$search()" line:
		() screwed up
		"then" missing
	(I booted the tools from scratch, to test everything out)

pkg/cl/*
	used ST version as a base; merged in NOAO changes where necessary

pkg/cl/mkpkg
	added lines to lex and yacc the grammar, if stsci and vms, since we
	muck around with the grammar too.
	also, typo in install comment (move to bin$, not lib$)

vms/hlib/notes.com rcscom.com  -->  local/
	these are ST-specific tools; notes file (notes.st) will also be here

doc/ports/ <-- old vms/ctio.hlp vmsprog.hlp  (from old distribution)

backup current ST develop/experimental version (IRAFX) to tape
backup new merged version to IRAFX
remake...
testing...
everything looks good...

Networking w/ DECnet seems to work fine; tried remote file access, remote
subprocesses (will be useful for IDM access).  Tried very simple remote tape
access and didn't work; seemed to abort quickly though as if it failed on
local host.  The noao notes file says it won't work on VMS because of the
process structure; not sure what this means exactly -- looks like it should
work with the allocation built into the kernel server as it is now.  Will
look into it more later...

dev/hosts
	set up ST nodes
***
	took out the single quotes on the vms executable name (from noao).
	can't access  "node!iraf$file"  with them in, i.e., the "iraf$"
	logical doesn't get set up correctly.  appears that the quotes are 
	left over from some previous syntax.  don't think noao has vms 
	servers (for tcp) yet (?).
***

vms/hlib/irafuser.com
	changed most job logicals to process ones, since they aren't needed
	at the job level, and job table space is limited around here.
	(Process logicals are automatically copied when spawning DCL commands 
	or background jobs.)  So, now (at least for ST),
		job logicals:  IRAFDISK (IMDIRDISK) IRAFTMP IRAFIRAF IRAFHOST 
				IRAFHLIB
	    process logicals:  IRAFLIB IRAFBIN IRAFLIBC IRAFVMS batch-logicals

vms/hlib/mkiraf.com
	bypass sections that delete login.cl and uparm files;
	let a new version of the login.cl be made in case user must go
	back.  for uparm files, the 'out of date' message will be enough
	to tell the user to do an unlearn.  besides, the sdas par files
	don't change that much (or do they?)  In any event, I'd get lots of
	complaints if everyone's par files disappear when running mkiraf.

vms/gdev/
	made library as is, to resolve link references w/ irafks, display and
	cv.  For deanza at ST, probably won't use this interface; easier to
	use old deanza code until new display code and image interfaces are
	in place.

pkg/language/doc/edit.hlp
	typo: edcapf --> edcap

pkg/system/doc/directory.hlp
	typo: \fb --> \fB

pkg/*
	many packages list a 'revisions' task in the help menu but don't
	have one in the package; I imagine this is a future enhancement.

pkg/images/tv/display/mkpkg
                     /deanza/*
	Added temporary deanza code (vms and stsci dependent).  Changed mkpkg
	in display/ to make the deanza/ subdir instead.  

dev/graphcap
	added entry for `deanza'; no more .imh files...Yeah!
	added entries for Selanar-enhanced vt100 (vt100s), and Pericom.

dev/termcap
	added/updated ST entries.

vms/hlib/clpackage.cl
	changed 'page' to 'type'.  if a long motd, user may inadvertantly
	type ahead and get all screwed up, so just type the message out.

pkg/cl/grammar.l
	modified to accept double precision real numbers on input, e.g.

		cl> task.param=12d20

	used to give a syntax error.  Simple change in lex input, namely:
	[eE] --> [eEdD] for real numbers.

vms/as/README
vms/as/cstr.mar  +
	Added assembler versions of LIBC string routines; added to list in 
	README file.  These are much faster than the LIBC string routines
	written in C, and although they may not make a significant increase 
	in performance of the CL, we have them, so why not use them.

sys/libc/mkpkg
	Modified to use as$cstr.s if available, otherwise use the portable 
	routines written in C.

vms/boot/mkpkg/mkpkg.help
	typo:  \fmkpkg --> \fBmkpkg

math/mkpkg
	added "$purge lib$" at end of 'mathgen'

-----------------------
CL Logging Enhancements
Feb/Mar 1986
-----------------------

The following enhancements to the CL logging facilities were made:

	1) a 'putlog' builtin was added, so a user's script or program 
	   can log important messages and errors
	2) added logging from the CL itself, when script and executable
	   tasks are started/stopped (i.e., a task trace)
	3) errors are logged, from the CL, when from a script or executable
	4) background logging supported (a result of above changes)

These functions are parameter controlled, by the CL parameter `logmode', e.g.,

	cl> logmode = "commands background error trace"
			(nocommands nobackground noerror notrace)

The old `keeplog' parameter has the same function, turning the whole thing 
on or off.

Note:	To avoid file access conflicts (e.g. bkg logging), the environment 
	variable 'filewait' must be set to "no".  (This is now the default 
	at ST.)  As a result, some log messages, especially those from the 
	background, may still not get to the (single) logfile.  The use of 
	multiple logfiles is encouraged because of this, but SDAS developers 
	and testers prefer a single logfile with everything in it.  Not much 
	we can do to change their minds.


Source changes in pkg/cl/:

builtin.c
	Added clputlog() function for the 'putlog' builtin.
	Added code so that the clerror() function calls putlog with 
	the error message, when logging is on.

history.c
	Fixed the code for shared logfile access.  Modified so login/logout
	messages are not printed for background jobs.
	Added putlog() function, which formats the log messages from the
	user and/or the CL and writes to logfile.
	Added reset_logfile() function to reopen logfile if name is changed.
	This is only for share_logfile=no and has not been tested here,
	but it's just a close and reopen.

exec.c
	Added code to log a message when starting/stopping a script or
	executable task.  This is the "trace" feature.

bkg.c
	Added code to log a message when a background job is started or 
	completes.

errs.c
	Added code to log the error messsage if a script or executable task
	(and it hasn't already been logged by clerror()).	

param.h
	Added P_CL value for p_flags field of the param structure.  This
	is used to test (quickly) whether a parameter is a CL parameter.

param.c
	Added check in paramset() for a CL parameter (p_flags & P_CL);
	if so, call parse_clmodes() (below).

modes.c
	Added parse_clmodes(), to parse logging control parameter and
	epinit/ehinit parameters and to call reset_logfile() if logfile
	name is changed.

clmodes.h
	Added extern declarations for logging/epinit/ehinit variables

eparam.c
history.c
cl.par
	"epinit" and "ehinit" changed from environment variables to CL params
	as per mail discussion with Doug.  Removed all setoption() stuff as 
	this is now taken care of in parse_clmodes() (in modes.c).

hlib/clpackage.cl
	Removed epinit and ehinit env vars.

hlib/login.cl
	Added commented out default values for logging and epinit/ehinit
	parameters to the template login.cl file.

pkg/language/doc/cl.hlp
		 ehistory.hlp
		 eparam.hlp
	Modified due to move of epinit/ehinit vars to CL parameters and
	addition of new logging parameter.  

pkg/language/language.hd 
	     language.men
pkg/language/doc/logging.hlp   +
		 putlog.hlp   +
	Added help for the "logging" discussion and the "putlog" builtin.  
	The "logging" man page talks about the CL logging as a whole, 
	discussing the parameters involved in a little more detail than the 
	help on the cl.

-------------------

pkg/cl/*
	Cleaned up some of the CL source code; mostly just removed some
	old, useless cldebug statements, etc.  Also cleaned up grammar.y
	a lot, at least to make the style consistent and more readable.
	Gram.c and decl.c also got a bit of this as well.

pkg/cl/README
	Updated text; still referred to Unix "make" and VMS DCL/Makelib
	generation techniques.
 
--------------------------------
Monday  24-MAR-1986 12:01:48.70
 
Subject: VMS/IRAF Plotting
 
dev/graphcap
	Added entries for QMS, EQMS, and NULL (testing) for STScI.

vms/os/ vms.h
	zfipol.c
	mcsub.c   +
	mkpkg

Implemented ZFIOPL for VMS to use NCAR Metacode translator (MCVAX).  A
spoolfile is written in the necessary VMS file format by ZFIOPL.  On close,
MCVAX is started up as a subprocess and commands are sent to it to set the
device (from graphcap DD string), read the spoolfile, and plot until finished. 

This code may depend on peculiarities of the ST version of MCVAX which I don't
know about. 
 
--------------------------------
Tuesday  25-MAR-1986 11:53:12.75
 
Subject: vms/boot/bootlib/vfn2osfn.c
 
Changed to return a null string if an error occurs mapping the file; it used to
return the last result of a filename mapping operation.  This would to lead to
problems in mkpkg, e.g., 

	$delete dir$sub/file.c

If this file did not exist, the previous filename returned by vfn2osfn() would
be deleted.
 
--------------------------------
Wednesday  26-MAR-1986 12:04:53.81
 
Subject: mkpkg

vms/boot/mkpkg/tok.c
	$ifdef/$ifndef was not working -- bug when setting boolean variable; 
	fixed.

	changed os_cmd() to host_xc() for do_omake(), do_link(), do_xc(), so
	the VMS DOCVCL routine can be used (to eliminate some spawning).
 
vms/boot/mkpkg/host.c
	docvcl() -- don't check return status and change to XYES/XNO; 
		leave as is (OK or ...)

	added host_xc() routine to call docvcl().

vms/boot/spp/xc.c
	bug fix -- `firstobj' variable was not being reinited to NULL; caused
	problems with above host_xc() changes.  Added reinit in do_cleanup().

vms/boot/mkpkg/mkpkg
	added ../spp/xc.c dependency for xcsub.c
 
--------------------------------
Friday  28-MAR-1986 09:37:16.83
 
Subject: ttyputline and map_cc
 
pkg/system/lprint.x    
	   page.x  
	   type.x
	./help/houtput.x

	Changed map_cc from bool to int to work correctly with ttyputline(),
	which expects an int and checks for YES/NO.  In VMS Fortran, .true. is 
	encoded as a -1, not a 1 (YES).  To change ttyputline() would mean
	changing the LIBC interface c_ttyputline() so that it knew about this
	feature of the host Fortran, so let's use the int YES/NO method.
 
--------------------------------
Friday  28-MAR-1986 10:12:49.38
 
Subject: graphcap entry for selanar hirez 100xl
 
Not sure if this is a graphcap entry problem or a limitation on the selanar
itself:  When in cursor mode in a task (e.g. onedspec.splot), typing 'c' to
print the cursor position will print "x,y: ... ..." in the lower left hand
corner, but then immediately erase it.  Help via '?' does the same thing, i.e.,
gets printed and erased immediately. 
 
--------------------------------
Wednesday   2-APR-1986 13:22:46.16
 
Subject: pkg/cl/edcap.c
 
Added the editor name to the eparam help page.
 
--------------------------------
Wednesday   2-APR-1986 15:24:20.96
 
Subject: vms/boot/bootlib/dcl.c
 
Added interrupt support.  When ^C typed, return status of dcl() (and os_cmd)
will be SYS_XINT, so MKPKG can deal with the error as on Unix. 
 
--------------------------------
Wednesday   2-APR-1986 16:51:37.03
 
Subject: vms/boot/spp/...
 
xc.c 		fixed inconsistencies in error/status checking, removed
		old code, rearranged some functions (main to front, etc).,
		and general cleanup.
xc.com		command file to make xc (only)
mkpkg.com 	call xc.com
 
--------------------------------
Thursday   3-APR-1986 08:06:49.57
 
Subject: editor
 
Just realized that "editor" is still an environment variable, used by
eparam/ehistory and the edit builtin.  Epinit/ehinit have been changed to CL
parameters during the logging changes, but I forgot about this one. 

Should we change "editor" to a CL parameter, too?  If so, it would require
changes in  pkg/cl/edcap.c,builtin.c,cl.par  and the help files for 
eparam,ehistory,edit,cl.