1;	OPAGE.CMD:	COBOL language MENU Page
2;			for MicroEMACS 3.11 and above
3;			(C)opyright 1988 by Daniel Lawrence
4;
5
6; set up the "clean" procedure
7store-procedure clean
8	delete-buffer "[Macro 10]"
9	delete-buffer "[Macro 11]"
10	delete-buffer "[Macro 12]"
11	delete-buffer "[Macro 13]"
12	delete-buffer "[Macro 14]"
13	delete-buffer "[Macro 15]"
14	delete-buffer "[Macro 16]"
15	delete-buffer "[Macro 17]"
16	delete-buffer "[Macro 18]"
17	delete-buffer "[Macro 19]"
18	bind-to-key handle-tab ^I
19	delete-buffer "[cobol-tab]"
20	set $cmode %oldmode
21	set $gmode %oldgmode
22	0 handle-tab
23!endm
24
25; make sure the function key window is up
26	set %rcfkeys FALSE
27	toggle-fkeys
28	write-message "Loading..."
29
30; Write out the page instructions
31	save-window
32	1 next-window
33	beginning-of-file
34	set $curcol 25
35	overwrite-string " F1 Make IDENT division   F2 UPPERcase buffer   "
36	next-line
37	set $curcol 25
38	overwrite-string " F3 Make ENVIR division   F4 while              "
39	next-line
40	set $curcol 25
41	overwrite-string " F5 REPEAT                F6 switch             "
42	next-line
43	set $curcol 18
44	overwrite-string "COBL"
45	set $curcol 25
46	overwrite-string " F7 VALUE                 F8 Reserved words UP  "
47	next-line
48	set $curcol 25
49	overwrite-string " F9 chk comment matching F10 Shell to DOS       "
50	unmark-buffer
51	beginning-of-file
52	!force restore-window
53	update-screen
54
55;
56
5710	store-macro
58	beginning-of-file
59
60	set %rctemp @"Program Name: "
61	insert-string "       IDENTIFICATION DIVISION.~n"
62	insert-string &cat &cat "       PROGRAM-ID. " %rctemp ".~n"
63	update-screen
64	set %rctemp @"Author: "
65	insert-string &cat &cat "       AUTHOR. " %rctemp ".~n"
66	insert-string &cat &cat "       DATE-WRITTEN. " $time ".~n"
67	insert-string "       DATE-COMPILED.~n"
68	insert-string "       REMARKS.~n~n"
69!endm
70bind-to-key execute-macro-10 S-FN1
71
72;	Function
7311	store-macro
74	9 set-mark
75	beginning-of-file
76	set-mark
77	end-of-file
78	case-region-upper
79	9 goto-mark
80!endm
81bind-to-key execute-macro-11 S-FN2
82
83;
84
8512	store-macro
86	insert-string "       ENVIRONMENT DIVISION.~n"
87	insert-string "       CONFIGURATION SECTION.~n"
88	insert-string "       SOURCE-COMPUTER. IBM-3090.~n"
89	insert-string "       OBJECT-COMPUTER. IBM-3090.~n"
90	insert-string "       SPECIAL-NAMES.~n"
91	insert-string "       INPUT-OUTPUT SECTION.~n"
92	insert-string "       FILE-CONTROL.~n"
93!endm
94bind-to-key execute-macro-12 S-FN3
95
96;
97
9813	store-macro
99        set %cond @"Condition Expr: "
100	;set $debug TRUE
101        insert-string &cat &cat "while (" %cond ") {"
102	newline-and-indent
103	newline-and-indent
104        insert-string &cat &cat "}  /* while (" %cond ") */"
105	1 previous-line
106        end-of-line
107	handle-tab
108!endm
109bind-to-key execute-macro-13 S-FN4
110
11114	store-macro
112        set %cond @"Condition Expr: "
113	;set $debug TRUE
114        set %curcol $curcol
115        insert-string &cat &cat "REPEAT~n"
116        %curcol insert-string " "
117        set $curcol %curcol
118        !if &EQUal  %curcol 3
119	        insert-string &cat &cat "UNTIL " %cond ";"
120	!else
121	        insert-string &cat      "UNTIL " %cond
122	!endif
123        beginning-of-line
124        open-line
125        %curcol insert-string " "
126        insert-string "   "
127	!force set $debug FALSE
128!endm
129bind-to-key execute-macro-14 S-FN5
130
13115	store-macro
132        set %expr @"Switch Expr: "
133	;set $debug TRUE
134        set %curcol $curcol
135        insert-string &cat &cat "switch (" %expr ") {"
136	newline-and-indent
137	insert-string "}"
138	previous-line
139	end-of-line
140	newline-and-indent
141	handle-tab
142	insert-string "case "
143	!force set $debug FALSE
144!endm
145bind-to-key execute-macro-15 S-FN6
146
14716	store-macro
148;	set $debug TRUE
149        set %curcol $curcol
150        set %value @"Value: "
151        insert-string &cat %value " : {~n"
152        %curcol insert-string " "
153        insert-string "    };~n"
154        %curcol insert-string " "
155	previous-line
156        beginning-of-line
157        open-line
158        %curcol insert-string " "
159        insert-string "       "
160	!force set $debug FALSE
161!endm
162bind-to-key execute-macro-16 S-FN7
163
16417	store-macro
165;	set $debug TRUE
166        set %curcol $curcol
167	;save-file
168        set-mark
169	beginning-of-file
170        write-message "[Replacing 'begin']
171	replace-string "begin" "BEGIN"
172
173	beginning-of-file
174        write-message "[Replacing 'end']
175	replace-string "end" "END"
176
177	beginning-of-file
178        write-message "[Replacing ' if']
179	replace-string " if" " IF"
180
181	beginning-of-file
182        write-message "[Replacing ' else']
183	replace-string " else" " ELSE"
184
185	beginning-of-file
186        write-message "[Replacing ' repeat']
187	replace-string " repeat" " REPEAT"
188
189	beginning-of-file
190        write-message "[Replacing ' while']
191	replace-string " while" " WHILE"
192
193        exchange-point-and-mark
194	!force set $debug FALSE
195!endm
196bind-to-key execute-macro-17 S-FN8
197
19818	store-macro
199	beginning-of-file
200	source findcom.cmd
201!endm
202bind-to-key execute-macro-18 S-FN9
203
20419	store-macro
205	i-shell
206!endm
207bind-to-key execute-macro-19 S-FN0
208
209;	This macro assumes we are on an 01 entry line and
210;	moves all the datanames to the DATANAMES buffer
211
212store-procedure getrecnames
213	set %orbuf $cbufname
214	!force delete-buffer DATANAMES
215	9 set-mark
216*grn	beginning-of-line
217	next-line
218	8 forward-character
219	!if &not &equ $curchar 32
220		9 goto-mark
221		write-message "[data names recorded]"
222		!return
223	!endif
224
225!endm
226
227; modify the tabbing behavior to match COBOL
228
229store-procedure	cobol-tab
230	!if &less $curcol 7
231		set %rctmp &sub 7 $curcol
232	!else
233		set %rctmp &sub &add 3 &band 252 &add 1 $curcol $curcol
234	!endif
235	%rctmp insert-space
236	%rctmp forward-character
237!endm
238macro-to-key cobol-tab ^I
239
240; Set up CMODE
241	set %oldmode $cmode
242	set %oldgmode $gmode
243	add-mode CMODE
244	add-global-mode CMODE
245	4 handle-tab
246
247write-message "[COBOL MENU page loaded]"
248