1167 lines
45 KiB
Plaintext
1167 lines
45 KiB
Plaintext
|
$set ans85 noosvs comp mf
|
||
|
************************************************************
|
||
|
* *
|
||
|
* (C) Micro Focus Ltd. 1989 *
|
||
|
* *
|
||
|
* CASE.CBL *
|
||
|
* *
|
||
|
* This program converts the case of COBOL source code *
|
||
|
* files in several ways, producing, for example, uppercase *
|
||
|
* reserved words and lower case data names. *
|
||
|
* *
|
||
|
* Instructions for use are presented when it is first *
|
||
|
* executed. *
|
||
|
* *
|
||
|
* This source file actually contains two separate *
|
||
|
* programs, one called from the other. This type of source *
|
||
|
* file is known as a multi-program source. Compiling this *
|
||
|
* source file will result in the creation of two separate *
|
||
|
* OBJs, as if two separate programs had been compiled, one *
|
||
|
* after the other. The two OBJs will be called CASE and *
|
||
|
* CASECONV, CASECONV taking its name from the PROGRAM-ID *
|
||
|
* line in the second program. *
|
||
|
* *
|
||
|
* Compile the program and link the two OBJs created in the *
|
||
|
* usual way. *
|
||
|
* *
|
||
|
************************************************************
|
||
|
identification division.
|
||
|
program-id. case.
|
||
|
environment division.
|
||
|
file-control.
|
||
|
select input-file assign input-file-name
|
||
|
organization is line sequential
|
||
|
file status is file-status.
|
||
|
|
||
|
select output-file assign output-file-name
|
||
|
organization is line sequential
|
||
|
file status is file-status.
|
||
|
|
||
|
data division.
|
||
|
|
||
|
file section.
|
||
|
|
||
|
fd input-file.
|
||
|
01 input-record pic x(80).
|
||
|
|
||
|
fd output-file.
|
||
|
01 output-record pic x(80).
|
||
|
|
||
|
working-storage section.
|
||
|
01 temp-00 .
|
||
|
03 temp-00-0101 pic x(0078) value "Instructions for using
|
||
|
- " the CASE utility for altering the case of COBOL source:".
|
||
|
03 filler pic x(0082).
|
||
|
03 temp-00-0301 pic x(0077) value "CASE <srce-file-spec>
|
||
|
- "<target-file-spec> <resvd-word> <data-name> <procedure>".
|
||
|
03 filler pic x(0086).
|
||
|
03 temp-00-0504 pic x(0062) value "src-file-spec: full pa
|
||
|
- "thname and file name for the source file".
|
||
|
03 filler pic x(0015).
|
||
|
03 temp-00-0601 pic x(0065) value "target-file-spec: full
|
||
|
- " pathname and file name for the target file".
|
||
|
03 filler pic x(0021).
|
||
|
03 temp-00-0707 pic x(0060) value "resvd-word: U means co
|
||
|
- "nvert all reserved words to UPPER case".
|
||
|
03 filler pic x(0032).
|
||
|
03 temp-00-0819 pic x(0029) value "L means convert to LOW
|
||
|
- "ER case".
|
||
|
03 filler pic x(0051).
|
||
|
03 temp-00-0919 pic x(0062) value "F means convert first
|
||
|
- "character to UPPER, all others to LOWER ".
|
||
|
03 temp-00-1001 pic x(0062) value " data-name: U me
|
||
|
- "ans convert all data names to UPPER case".
|
||
|
03 filler pic x(0036).
|
||
|
03 temp-00-1119 pic x(0029) value "L means convert to LOW
|
||
|
- "ER case".
|
||
|
03 filler pic x(0051).
|
||
|
03 temp-00-1219 pic x(0062) value "F means convert first
|
||
|
- "character to UPPER, all others to LOWER ".
|
||
|
03 temp-00-1301 pic x(0079) value " procedure: U me
|
||
|
- "ans convert all procedure and section names to UPPER case".
|
||
|
03 filler pic x(0019).
|
||
|
03 temp-00-1419 pic x(0029) value "L means convert to LOW
|
||
|
- "ER case".
|
||
|
03 filler pic x(0051).
|
||
|
03 temp-00-1519 pic x(0061) value "F means convert first
|
||
|
- "character to UPPER, all others to LOWER".
|
||
|
03 filler pic x(0081).
|
||
|
03 temp-00-1701 pic x(0054) value "eg. CASE C:\WORK\MYPRO
|
||
|
- "G.CBL D:\MYDIR\NEWPROG.CBL U F L".
|
||
|
03 filler pic x(0106).
|
||
|
03 temp-00-1901 pic x(0080) value "The other use of this
|
||
|
- "utility is to convert a COBOL source file to ""SENTENCE"".
|
||
|
- "".
|
||
|
03 temp-00-2001 pic x(0080) value "ie. the first characte
|
||
|
- "r found after a period is UPPER case, all others are LOWER".
|
||
|
03 filler pic x(0080).
|
||
|
03 temp-00-2201 pic x(0050) value "eg. CASE C:\WORK\MYPRO
|
||
|
- "G.CBL D:\MYDIR\NEWPROG.CBL S".
|
||
|
03 filler pic x(0030).
|
||
|
77 prog-line-no pic 9(6) comp.
|
||
|
77 prog-line-no-disp pic z(6).
|
||
|
77 start-ind pic 99 comp.
|
||
|
77 char-ind pic 99 comp.
|
||
|
77 buffer-char-ind pic 99 comp.
|
||
|
|
||
|
77 file-flag pic x.
|
||
|
88 end-of-file value "Y".
|
||
|
|
||
|
77 error-flag pic x.
|
||
|
88 error-found value "Y".
|
||
|
|
||
|
77 file-status pic xx.
|
||
|
|
||
|
77 input-file-name pic x(80).
|
||
|
|
||
|
77 output-file-name pic x(80).
|
||
|
|
||
|
77 q-answer pic x.
|
||
|
|
||
|
77 no-list pic x(6).
|
||
|
88 no-list-true value "Nolist" "NOLIST" "nolist" "NoList".
|
||
|
77 syntax-error pic x(80)
|
||
|
value "Syntax error in parameters - Program Terminated".
|
||
|
01 out-err.
|
||
|
03 oe1 pic x(20)
|
||
|
value "Target file exists:".
|
||
|
03 oe2 pic x(15) value "Are you sure?".
|
||
|
01 in-err.
|
||
|
03 ie1 pic x(27)
|
||
|
value "Source file not found for:".
|
||
|
03 in-err-fname pic x(53).
|
||
|
01 dup-err.
|
||
|
03 de1 pic x(37)
|
||
|
value "Source and target file are the same:".
|
||
|
03 dup-err-fname pic x(43).
|
||
|
|
||
|
78 upper-case value "UPPER-CASE".
|
||
|
78 lower-case value "lower-case".
|
||
|
78 first-char value "First-Character-Upper".
|
||
|
78 sentence-case value "Sentence-type-case".
|
||
|
|
||
|
01 final-message-1.
|
||
|
03 fm1 pic x(31) value " About to convert:".
|
||
|
03 disp-inp pic x(49).
|
||
|
03 fm2 pic x(31) value " to:".
|
||
|
03 disp-out pic x(49).
|
||
|
01 final-message-2-1.
|
||
|
03 fm3 pic x(31) value " Converting Reserved words to:".
|
||
|
03 res-inp pic x(49).
|
||
|
03 fm4 pic x(31) value " Data names to:".
|
||
|
03 dat-inp pic x(49).
|
||
|
03 fm5 pic x(31) value " Procedure names to:".
|
||
|
03 pro-inp pic x(49).
|
||
|
01 final-message-2-2.
|
||
|
03 fm6 pic x(31) value " Converting entire file to:".
|
||
|
03 fm7 pic x(49) value "Sentence case".
|
||
|
01 final-message-3.
|
||
|
03 fm8 pic x(31) value "--- No screen listing ---".
|
||
|
01 final-message-4.
|
||
|
03 fm9 pic x(31) value " Do you wish to continue ? ".
|
||
|
|
||
|
01 command-tail.
|
||
|
03 command-tail-char pic x occurs 81.
|
||
|
|
||
|
01 buffer-string.
|
||
|
03 buffer-char pic x occurs 80.
|
||
|
|
||
|
01 case-linkage.
|
||
|
03 case-flags.
|
||
|
05 lnk-reserved-case pic x.
|
||
|
88 lnk-reserved-case-ok
|
||
|
value "u" "l" "f" "U" "L" "F" "S" "s".
|
||
|
* note that the resreved case flag is also used to determine if
|
||
|
* the conversion is to be a "sentence" type conversion.
|
||
|
05 lnk-data-name-case pic x.
|
||
|
88 lnk-data-name-case-ok
|
||
|
value "u" "l" "f" "U" "L" "F".
|
||
|
05 lnk-proc-case pic x.
|
||
|
88 lnk-proc-case-ok
|
||
|
value "u" "l" "f" "U" "L" "F".
|
||
|
03 record-area pic x(80).
|
||
|
|
||
|
procedure division.
|
||
|
runstart section.
|
||
|
display spaces upon crt
|
||
|
perform get-command-line
|
||
|
if not error-found
|
||
|
perform test-case-flags
|
||
|
if error-found
|
||
|
perform command-line-error
|
||
|
else
|
||
|
perform open-input-file
|
||
|
if error-found
|
||
|
perform input-file-error
|
||
|
else
|
||
|
display spaces upon crt
|
||
|
perform check-output-file
|
||
|
if not error-found
|
||
|
open output output-file
|
||
|
perform convert-file
|
||
|
close input-file
|
||
|
close output-file
|
||
|
end-if
|
||
|
end-if
|
||
|
end-if
|
||
|
end-if
|
||
|
exit program
|
||
|
stop run.
|
||
|
|
||
|
get-command-line section.
|
||
|
accept command-tail from command-line
|
||
|
if command-tail = spaces
|
||
|
perform command-line-prompt
|
||
|
display "Enter Parameters"
|
||
|
accept command-tail
|
||
|
if command-tail = spaces
|
||
|
set error-found to true
|
||
|
display syntax-error
|
||
|
end-if
|
||
|
end-if
|
||
|
if not error-found
|
||
|
perform split-off-names
|
||
|
if input-file-name = spaces
|
||
|
or output-file-name = spaces
|
||
|
or lnk-reserved-case = spaces
|
||
|
or lnk-data-name-case = spaces
|
||
|
or lnk-proc-case = spaces
|
||
|
perform command-line-error
|
||
|
else
|
||
|
if input-file-name = output-file-name
|
||
|
perform duplicate-file-name-error
|
||
|
end-if
|
||
|
end-if
|
||
|
end-if.
|
||
|
|
||
|
open-input-file section.
|
||
|
open input input-file
|
||
|
if file-status not = "00"
|
||
|
set error-found to true
|
||
|
close input-file
|
||
|
end-if.
|
||
|
|
||
|
check-output-file section.
|
||
|
open input output-file
|
||
|
if file-status = "00"
|
||
|
close output-file
|
||
|
perform check-for-overwrite
|
||
|
end-if.
|
||
|
|
||
|
convert-file section.
|
||
|
move input-file-name to disp-inp
|
||
|
move output-file-name to disp-out
|
||
|
evaluate lnk-reserved-case
|
||
|
when "U"
|
||
|
when "u"
|
||
|
move upper-case to res-inp
|
||
|
when "L"
|
||
|
when "l"
|
||
|
move lower-case to res-inp
|
||
|
when "F"
|
||
|
when "f"
|
||
|
move first-char to res-inp
|
||
|
when "S"
|
||
|
when "s"
|
||
|
move sentence-case to res-inp
|
||
|
end-evaluate
|
||
|
evaluate lnk-data-name-case
|
||
|
when "U"
|
||
|
when "u"
|
||
|
move upper-case to dat-inp
|
||
|
when "L"
|
||
|
when "l"
|
||
|
move lower-case to dat-inp
|
||
|
when "F"
|
||
|
when "f"
|
||
|
move first-char to dat-inp
|
||
|
end-evaluate
|
||
|
evaluate lnk-proc-case
|
||
|
when "U"
|
||
|
when "u"
|
||
|
move upper-case to pro-inp
|
||
|
when "L"
|
||
|
when "l"
|
||
|
move lower-case to pro-inp
|
||
|
when "F"
|
||
|
when "f"
|
||
|
move first-char to pro-inp
|
||
|
end-evaluate
|
||
|
display final-message-1 at 0301
|
||
|
if lnk-reserved-case = "S" or "s"
|
||
|
display final-message-2-2 at 0601
|
||
|
else
|
||
|
display final-message-2-1 at 0601
|
||
|
end-if
|
||
|
if no-list-true
|
||
|
display final-message-3 at 1001
|
||
|
end-if
|
||
|
display final-message-4 at 1201
|
||
|
move "Y" to q-answer
|
||
|
accept q-answer at 1233
|
||
|
|
||
|
if q-answer = "y" or "Y"
|
||
|
display "Converting - Please Wait" at 1401
|
||
|
perform read-input-file
|
||
|
move 1 to prog-line-no
|
||
|
perform until end-of-file
|
||
|
move prog-line-no to prog-line-no-disp
|
||
|
move input-record to record-area
|
||
|
call "CASECONV" using case-linkage
|
||
|
move record-area to output-record
|
||
|
write output-record
|
||
|
if not no-list-true
|
||
|
move prog-line-no-disp to output-record(1:6)
|
||
|
display output-record
|
||
|
else
|
||
|
display prog-line-no-disp at 1425
|
||
|
end-if
|
||
|
add 1 to prog-line-no
|
||
|
perform read-input-file
|
||
|
end-perform
|
||
|
display " "
|
||
|
display " "
|
||
|
display "Conversion complete"
|
||
|
else
|
||
|
set error-found to true
|
||
|
end-if.
|
||
|
|
||
|
split-off-names section.
|
||
|
move 1 to start-ind
|
||
|
perform find-leading-spaces
|
||
|
perform get-input-file-name
|
||
|
perform find-leading-spaces
|
||
|
perform get-output-file-name
|
||
|
perform find-leading-spaces
|
||
|
perform get-reserved-flag
|
||
|
if lnk-reserved-case = "S" or "s"
|
||
|
move "S" to lnk-data-name-case
|
||
|
move "S" to lnk-proc-case
|
||
|
else
|
||
|
perform find-leading-spaces
|
||
|
perform get-data-name-flag
|
||
|
perform find-leading-spaces
|
||
|
perform get-proc-name-flag
|
||
|
end-if
|
||
|
perform find-leading-spaces
|
||
|
perform get-nolist-flag.
|
||
|
|
||
|
find-leading-spaces section.
|
||
|
perform varying char-ind from start-ind by 1 until
|
||
|
(char-ind > 80)
|
||
|
or not (command-tail-char(char-ind) = (spaces or ","))
|
||
|
end-perform
|
||
|
move char-ind to start-ind.
|
||
|
|
||
|
get-input-file-name section.
|
||
|
move spaces to buffer-string
|
||
|
move 1 to buffer-char-ind
|
||
|
perform varying char-ind from start-ind by 1 until
|
||
|
char-ind > 80 or command-tail-char(char-ind) = spaces
|
||
|
move command-tail-char(char-ind) to
|
||
|
buffer-char(buffer-char-ind)
|
||
|
add 1 to buffer-char-ind
|
||
|
end-perform
|
||
|
move buffer-string to input-file-name
|
||
|
move char-ind to start-ind.
|
||
|
|
||
|
get-output-file-name section.
|
||
|
move spaces to buffer-string
|
||
|
move 1 to buffer-char-ind
|
||
|
perform varying char-ind from start-ind by 1 until
|
||
|
char-ind > 80 or command-tail-char(char-ind) = spaces
|
||
|
move command-tail-char(char-ind) to
|
||
|
buffer-char(buffer-char-ind)
|
||
|
add 1 to buffer-char-ind
|
||
|
end-perform
|
||
|
move buffer-string to output-file-name
|
||
|
move char-ind to start-ind.
|
||
|
|
||
|
get-reserved-flag section.
|
||
|
if start-ind < 80
|
||
|
move command-tail-char(start-ind) to lnk-reserved-case
|
||
|
add 1 to start-ind
|
||
|
end-if.
|
||
|
|
||
|
get-data-name-flag section.
|
||
|
if start-ind < 80
|
||
|
move command-tail-char(start-ind) to lnk-data-name-case
|
||
|
add 1 to start-ind
|
||
|
end-if.
|
||
|
|
||
|
get-proc-name-flag section.
|
||
|
if start-ind < 80
|
||
|
move command-tail-char(start-ind) to lnk-proc-case
|
||
|
add 1 to start-ind
|
||
|
end-if.
|
||
|
|
||
|
get-nolist-flag section.
|
||
|
move spaces to buffer-string
|
||
|
move 1 to buffer-char-ind
|
||
|
perform varying char-ind from start-ind by 1 until
|
||
|
char-ind > 80 or command-tail-char(char-ind) = spaces
|
||
|
move command-tail-char(char-ind) to
|
||
|
buffer-char(buffer-char-ind)
|
||
|
add 1 to buffer-char-ind
|
||
|
end-perform
|
||
|
move buffer-string to no-list.
|
||
|
|
||
|
check-for-overwrite section.
|
||
|
display out-err at 0101
|
||
|
move "Y" to q-answer
|
||
|
accept q-answer at 0137
|
||
|
if q-answer = "y" or "Y"
|
||
|
next sentence
|
||
|
else
|
||
|
set error-found to true
|
||
|
end-if.
|
||
|
|
||
|
input-file-error section.
|
||
|
set error-found to true
|
||
|
move input-file-name to in-err-fname
|
||
|
display in-err.
|
||
|
|
||
|
command-line-error section.
|
||
|
perform command-line-prompt
|
||
|
display syntax-error
|
||
|
set error-found to true.
|
||
|
|
||
|
command-line-prompt section.
|
||
|
display temp-00.
|
||
|
|
||
|
duplicate-file-name-error section.
|
||
|
move input-file-name to dup-err-fname
|
||
|
set error-found to true
|
||
|
display dup-err.
|
||
|
|
||
|
read-input-file section.
|
||
|
read input-file
|
||
|
at end
|
||
|
set end-of-file to true
|
||
|
end-read.
|
||
|
|
||
|
test-case-flags section.
|
||
|
if lnk-reserved-case = "S" or "s"
|
||
|
next sentence
|
||
|
else
|
||
|
if lnk-reserved-case-ok and
|
||
|
lnk-data-name-case-ok and lnk-proc-case-ok
|
||
|
next sentence
|
||
|
else
|
||
|
set error-found to true
|
||
|
end-if
|
||
|
end-if.
|
||
|
|
||
|
end program case.
|
||
|
|
||
|
|
||
|
identification division.
|
||
|
program-id. caseconv.
|
||
|
***************************************************************
|
||
|
* This program accepts one 80 character line of COBOL code in its
|
||
|
* linkage section. This line of code is returned to the calling
|
||
|
* program with the line of code changed according to the
|
||
|
* following rules:
|
||
|
*
|
||
|
* There are 3 parameters passed in linkage section:
|
||
|
*
|
||
|
* lnk-reserved-case can have values U, L and F
|
||
|
* lnk-data-name-case can have values U, L and F
|
||
|
* lnk-proc-case can have values U, L and F
|
||
|
*
|
||
|
* the first parameter controls the case of reserved words
|
||
|
* the second parameter controls the case of data names
|
||
|
* the third parameter controls the procedure and section names
|
||
|
*
|
||
|
* All the above can be independantly changed so that they are
|
||
|
* in:
|
||
|
*
|
||
|
* UPPER-CASE
|
||
|
* lower-case or
|
||
|
* First-Character-Upper-Case
|
||
|
*
|
||
|
* according to the respective value of the parameter
|
||
|
*
|
||
|
* One additional function of this program is controlled by
|
||
|
* passing the value "S" in lnk-reserved-case. In this case, the
|
||
|
* other parameters are ignored and the entire line is converted
|
||
|
* so that the case is made "Sentence like". ie. the first
|
||
|
* alphabetic character found after a period is capitalised.
|
||
|
***************************************************************
|
||
|
working-storage section.
|
||
|
01 temp-char pic x.
|
||
|
01 temp-char-9 redefines temp-char pic 99 comp.
|
||
|
* This next variable, and its associated 88 is used to determine
|
||
|
* whether to capitalize the next character in the case of "F"
|
||
|
* type conversion. The setting in the 88 is to capitalize after
|
||
|
* a space, a hyphen etc. This can be changed to suit your
|
||
|
* requirements.
|
||
|
|
||
|
01 prev-char pic x.
|
||
|
88 prev-char-separator
|
||
|
value "(" ":" "-" space "0" thru "9".
|
||
|
77 ind-1 pic 9(4) comp.
|
||
|
77 ind-2 pic 9(4) comp.
|
||
|
78 editfun value x"bb".
|
||
|
78 spacebreak value x"c5".
|
||
|
78 yes value 1.
|
||
|
78 nay value 0.
|
||
|
01 literal pic 99 comp value zero.
|
||
|
01 reserved pic 99 comp value zero.
|
||
|
01 new-sentence-expected pic 99 comp value 1.
|
||
|
01 start-of-sentence pic 99 comp value 1.
|
||
|
01 perf-name-expected pic 99 comp value zero.
|
||
|
01 alt1-name-expected pic 99 comp value zero.
|
||
|
01 alt2-name-expected pic 99 comp value zero.
|
||
|
01 go-name-expected pic 99 comp value zero.
|
||
|
01 pic-name-expected pic 99 comp value zero.
|
||
|
01 sub pic 99 comp value zero.
|
||
|
01 start-sub pic 99 comp value zero.
|
||
|
01 end-sub pic 99 comp value zero.
|
||
|
01 res-sub pic 99 comp value zero.
|
||
|
01 res-len pic 99 comp value zero.
|
||
|
01 res-word-buffer.
|
||
|
02 res-word-buffer-char pic x occurs 65.
|
||
|
01 filler redefines res-word-buffer.
|
||
|
02 res19.
|
||
|
03 res18.
|
||
|
04 res17.
|
||
|
05 res16.
|
||
|
06 res15.
|
||
|
07 res14.
|
||
|
08 res13.
|
||
|
09 res12.
|
||
|
10 res11.
|
||
|
11 res10.
|
||
|
12 res09.
|
||
|
13 res08.
|
||
|
14 res07.
|
||
|
15 res06.
|
||
|
16 res05.
|
||
|
17 res04.
|
||
|
18 res03.
|
||
|
19 res02 pic xx.
|
||
|
19 filler pic x.
|
||
|
18 filler pic x.
|
||
|
17 filler pic x.
|
||
|
16 filler pic x.
|
||
|
15 filler pic x.
|
||
|
14 filler pic x.
|
||
|
13 filler pic x.
|
||
|
12 filler pic x.
|
||
|
11 filler pic x.
|
||
|
10 filler pic x.
|
||
|
09 filler pic x.
|
||
|
08 filler pic x.
|
||
|
07 filler pic x.
|
||
|
06 filler pic x.
|
||
|
05 filler pic x.
|
||
|
04 filler pic x.
|
||
|
03 filler pic x.
|
||
|
02 filler pic x(46).
|
||
|
01 char-to-bin.
|
||
|
02 char pic x.
|
||
|
01 char9 redefines char-to-bin pic 99 comp.
|
||
|
01 ulcase pic 99 comp value 0.
|
||
|
01 locase pic 99 comp value 1.
|
||
|
01 editstart pic 9(4) comp value zero.
|
||
|
01 templen pic 9(4) comp value zero.
|
||
|
01 editlen pic 9(4) comp value zero.
|
||
|
01 editfunction pic 9(4) comp value 0.
|
||
|
|
||
|
*list of no of reserved words for ANS85
|
||
|
78 res-word-count-2 value 24.
|
||
|
78 res-word-count-3 value 24.
|
||
|
78 res-word-count-4 value 51.
|
||
|
78 res-word-count-5 value 43.
|
||
|
78 res-word-count-6 value 48.
|
||
|
78 res-word-count-7 value 41.
|
||
|
78 res-word-count-8 value 40.
|
||
|
78 res-word-count-9 value 23.
|
||
|
78 res-word-count-10 value 23.
|
||
|
78 res-word-count-11 value 17.
|
||
|
78 res-word-count-12 value 15.
|
||
|
78 res-word-count-13 value 9.
|
||
|
78 res-word-count-14 value 6.
|
||
|
78 res-word-count-15 value 4.
|
||
|
78 res-word-count-16 value 2.
|
||
|
78 res-word-count-19 value 1.
|
||
|
|
||
|
01 r2tab pic x(48) value "ATBYCDFDGOIDIFINISNOOFONORRDSDTOUPCF
|
||
|
-"CHDEPFPHRFRH".
|
||
|
01 filler redefines r2tab.
|
||
|
02 r2entry pic xx occurs res-word-count-2.
|
||
|
01 r3tab pic x(72) value "ADDALLANDARECRTDAYEGIEMIENDEOPESIFOR
|
||
|
-"KEYNOTOFFPICRUNSETTABTOPUSEI-OSUMANY".
|
||
|
01 filler redefines r3tab.
|
||
|
02 r3entry pic xxx occurs res-word-count-3.
|
||
|
01 r4tab.
|
||
|
02 filler pic x(128) value "ALSOAREACALLCOMPCOPYCORRDATADATEDOWN
|
||
|
-"ELSEEXITFILEFROMINTOJUSTKEPTLEFTLESSLINEMODEMOVENEXTOPENPAGEREAD
|
||
|
-"REELSAMESENDSIGNSIZESORTSTOP".
|
||
|
02 filler pic x(76) value
|
||
|
-"TAPETEXTTHANTHENTHRUTIMETYPEUNITUPONWHENWITHZEROSYNCCODELASTPLUS
|
||
|
-"TESTTHENTRUE".
|
||
|
01 filler redefines r4tab.
|
||
|
02 r4entry pic x(4) occurs res-word-count-4.
|
||
|
01 r5tab.
|
||
|
02 filler pic x(128) value "AFTERALTERAREASBLANKBLOCKCLOSECOBOLC
|
||
|
-"OMMACOUNTEQUALERROREVERYFIRSTINDEXINPUTLABELLIMITLINESMERGEQUEUE
|
||
|
-"QUOTERERUNSPACESTARTSYSINTAB".
|
||
|
02 filler pic x(87) value
|
||
|
-"LETIMESUNTILUSAGEUSINGVALUEWORDSWRITEZEROSENTERRIGHTFINALGROUPRE
|
||
|
-"SETCLASSORDEROTHERPURGE".
|
||
|
01 filler redefines r5tab.
|
||
|
02 r5entry pic x(5) occurs res-word-count-5.
|
||
|
01 r6tab.
|
||
|
02 filler pic x(128) value "ACCEPTACCESSASSIGNAUTHORBEFOREBOTTOM
|
||
|
-"CANCELCOMMITCOMP-3CURSORDELETEDIVIDEENABLEEXTENDFILLERGIVINGLENG
|
||
|
-"THLIMITSLINAGEMANUALMEMORYNA".
|
||
|
02 filler pic x(124) value
|
||
|
-"TIVEOCCURSOUTPUTQUOTESRANDOMRECORDRETURNREWINDSEARCHSELECTSOURCE
|
||
|
-"SPACESSTATUSSTRINGSWITCHSYSOUTUNLOCKVALUESZEROESCOMP-3COLUMN".
|
||
|
02 filler pic x(42) value
|
||
|
-"DETAILREPORTNUMBERBINARYCOMMONEND-IFGLOBAL".
|
||
|
01 filler redefines r6tab.
|
||
|
02 r6entry pic x(6) occurs res-word-count-6.
|
||
|
01 r7tab.
|
||
|
02 filler pic x(128) value "COMPUTECONSOLEDISABLEDISPLAYDYNAMICF
|
||
|
-"OOTINGGREATERINDEXEDINSPECTINVALIDLEADINGLINKAGEMESSAGEMODULESNU
|
||
|
-"MERICOMITTEDPERFORMPICTUREPO".
|
||
|
02 filler pic x(124) value
|
||
|
-"INTERPROCEEDPROGRAMRECEIVERECORDSRELEASEREMOVALRENAMESRESERVEREW
|
||
|
-"RITEROUNDEDSECTIONSEGMENTTHROUGHVARYINGINITIALCONTROLHEADING".
|
||
|
02 filler pic x(35) value
|
||
|
-"REPORTSCONTENTEND-ADDPADDINGREPLACE".
|
||
|
01 filler redefines r7tab.
|
||
|
02 r7entry pic x(7) occurs res-word-count-7.
|
||
|
01 r8tab.
|
||
|
02 filler pic x(128) value "CODE-SETCONTAINSCURRENCYDIVISIONEXCE
|
||
|
-"SS-3FORMFEEDJAPANESEMULTIPLEMULTIPLYNEGATIVEOPTIONALOVERFLOWPOSI
|
||
|
-"TIONPOSITIVEREVERSEDROLLBACK".
|
||
|
02 filler pic x(128) value
|
||
|
-"SENTENCESEPARATESEQUENCESTANDARDSUBTRACTSYMBOLICTALLYINGTERMINAL
|
||
|
-"TRAILINGUNSTRINGCONTROLSGENERATEINDICATEINITIATEPRINTINGSUPPRESS
|
||
|
-"".
|
||
|
02 filler pic x(64) value
|
||
|
-"RELATIVESECURITYALPHABETCONTINUEEND-READEVALUATEEXTERNALEND-CALL
|
||
|
-"".
|
||
|
01 filler redefines r8tab.
|
||
|
02 r8entry pic x(8) occurs res-word-count-8.
|
||
|
01 r9tab.
|
||
|
02 filler pic x(126) value "ADVANCINGAUTOMATICCHARACTERCRT-UNDER
|
||
|
-"DEBUGGINGDELIMITEDDELIMITERDEPENDINGEXCEPTIONEXCLUSIVEJUSTIFIEDP
|
||
|
-"ROCEDUREREDEFINESREMAINDER".
|
||
|
02 filler pic x(81) value
|
||
|
-"REPLACINGREPORTINGTERMINATEASCENDINGALTERNATECOLLATINGEND-STARTE
|
||
|
-"ND-WRITEREFERENCE".
|
||
|
01 filler redefines r9tab.
|
||
|
02 r9entry pic x(9) occurs res-word-count-9.
|
||
|
01 r10tab.
|
||
|
02 filler pic x(090) value "ALPHABETICAREA-VALUECHARACTERSDUPLIC
|
||
|
-"ATESPROCEDURESREFERENCESSEQUENTIALSORT-MERGESTANDARD-1".
|
||
|
02 filler pic x(060) value "DEBUG-ITEMDEBUG-LINEDEBUG-NAMEHIGH-V
|
||
|
-"ALUEPROGRAM-IDDESCENDING".
|
||
|
02 filler pic x(080) value "CONVERTINGEND-DELETEEND-RETURNEND-SE
|
||
|
-"ARCHEND-STRINGINITIALIZESTANDARD-2END-DIVIDE".
|
||
|
01 filler redefines r10tab.
|
||
|
02 r10entry pic x(10) occurs res-word-count-10.
|
||
|
01 r11tab.
|
||
|
02 filler pic x(088) value "CLOCK-UNITSDEBUG-SUB-1DEBUG-SUB-2DEB
|
||
|
-"UG-SUB-3DESTINATIONEND-OF-PAGEENVIRONMENTHIGH-VALUES".
|
||
|
02 filler pic x(033) value "SUB-QUEUE-1SUB-QUEUE-2SUB-QUEUE-3".
|
||
|
02 filler pic x(011) value "I-O-CONTROL".
|
||
|
02 filler pic x(055) value
|
||
|
"DAY-OF-WEEKEND-COMPUTEEND-PERFORMEND-RECEIVEEND-REWRITE".
|
||
|
01 filler redefines r11tab.
|
||
|
02 r11entry pic x(11) occurs res-word-count-11.
|
||
|
01 r12tab.
|
||
|
02 filler pic x(084) value "COMMAND-LINEDATE-WRITTENDECLARATIVES
|
||
|
-"FILE-CONTROLINPUT-OUTPUTINSTALLATIONORGANIZATION".
|
||
|
02 filler pic x(096) value "SYNCHRONIZEDLINE-COUNTERPAGE-COUNTER
|
||
|
-"ALPHANUMERICEND-EVALUATEEND-MULTIPLYEND-SUBTRACTEND-UNSTRING".
|
||
|
01 filler redefines r12tab.
|
||
|
02 r12entry pic x(12) occurs res-word-count-12.
|
||
|
01 r13tab.
|
||
|
02 filler pic x(078) value "COMMUNICATIONCOMPUTATIONALCONFIGURAT
|
||
|
-"IONCORRESPONDINGDATE-COMPILEDDECIMAL-POINT".
|
||
|
02 filler pic x(039) value "LOCKLOW-VALUESEGMENT-LIMITSPECIAL-NA
|
||
|
-"MES".
|
||
|
01 filler redefines r13tab.
|
||
|
02 r13entry pic x(13) occurs res-word-count-13.
|
||
|
01 r14tab.
|
||
|
02 filler pic x(084) value "DEBUG-CONTENTSIDENTIFICATIONLINAGE-C
|
||
|
-"OUNTERLOCKLOW-VALUESNUMERIC-EDITEDPACKED-DECIMAL".
|
||
|
01 filler redefines r14tab.
|
||
|
02 r14entry pic x(14) occurs res-word-count-14.
|
||
|
01 r15tab.
|
||
|
02 filler pic x(060) value "COMPUTATIONAL-3OBJECT-COMPUTERSOURCE
|
||
|
-"-COMPUTERWORKING-STORAGE".
|
||
|
01 filler redefines r15tab.
|
||
|
02 r15entry pic x(15) occurs res-word-count-15.
|
||
|
01 r16tab.
|
||
|
02 filler pic x(032) value "ALPHABETIC-LOWERALPHABETIC-UPPER".
|
||
|
01 filler redefines r16tab.
|
||
|
02 r16entry pic x(16) occurs res-word-count-16.
|
||
|
01 r19tab.
|
||
|
02 filler pic x(019) value "ALPHANUMERIC-EDITED".
|
||
|
01 filler redefines r19tab.
|
||
|
02 r19entry pic x(19) occurs res-word-count-19.
|
||
|
|
||
|
01 ws-case-linkage.
|
||
|
03 ws-case-flags.
|
||
|
05 def-reserved-case pic x.
|
||
|
05 def-sentence-case redefines def-reserved-case pic x.
|
||
|
05 def-data-name-case pic x.
|
||
|
05 def-proc-case pic x.
|
||
|
03 so-rec.
|
||
|
05 so-rec-chr pic x occurs 80.
|
||
|
|
||
|
linkage section.
|
||
|
01 case-linkage.
|
||
|
03 case-flags.
|
||
|
05 lnk-reserved-case pic x.
|
||
|
05 lnk-data-name-case pic x.
|
||
|
05 lnk-proc-case pic x.
|
||
|
03 record-area pic x(80).
|
||
|
|
||
|
procedure division using case-linkage.
|
||
|
main-prog section.
|
||
|
move case-linkage to ws-case-linkage.
|
||
|
if ws-case-flags = spaces or so-rec = spaces
|
||
|
next sentence
|
||
|
else
|
||
|
perform case
|
||
|
move ws-case-linkage to case-linkage.
|
||
|
exit program.
|
||
|
stop run.
|
||
|
|
||
|
case section.
|
||
|
move nay to perf-name-expected.
|
||
|
move nay to alt1-name-expected.
|
||
|
move nay to alt2-name-expected.
|
||
|
move nay to go-name-expected.
|
||
|
move nay to pic-name-expected.
|
||
|
move nay to literal.
|
||
|
case1.
|
||
|
move 8 to start-sub.
|
||
|
if so-rec-chr(7) = "*"
|
||
|
go to case-end.
|
||
|
case2.
|
||
|
if new-sentence-expected = 1
|
||
|
move 1 to start-of-sentence
|
||
|
else
|
||
|
move 0 to start-of-sentence.
|
||
|
perform next-word.
|
||
|
if start-sub > 72
|
||
|
go to case-end.
|
||
|
if literal = yes
|
||
|
move end-sub to start-sub
|
||
|
go to case2.
|
||
|
move start-sub to sub.
|
||
|
if reserved = yes
|
||
|
if def-reserved-case = "N"
|
||
|
move end-sub to start-sub
|
||
|
go to case2.
|
||
|
if pic-name-expected = yes
|
||
|
go to case3.
|
||
|
if reserved = nay
|
||
|
go to case4.
|
||
|
case3.
|
||
|
move res-len to editlen.
|
||
|
move sub to editstart.
|
||
|
if def-sentence-case = "S" or "s"
|
||
|
perform convert-to-sentence
|
||
|
else
|
||
|
if def-reserved-case = "F" or "f"
|
||
|
perform convert-to-first
|
||
|
else
|
||
|
if def-reserved-case = "U" or "u"
|
||
|
perform convert-to-upper
|
||
|
else
|
||
|
if def-reserved-case = "L" or "l"
|
||
|
perform convert-to-lower.
|
||
|
move end-sub to start-sub.
|
||
|
go to case2.
|
||
|
case4.
|
||
|
if start-sub = 8
|
||
|
go to case6.
|
||
|
if perf-name-expected = yes
|
||
|
go to case6.
|
||
|
if alt1-name-expected = yes
|
||
|
go to case6.
|
||
|
if alt2-name-expected = yes
|
||
|
go to case6.
|
||
|
if go-name-expected = yes
|
||
|
go to case6.
|
||
|
if def-data-name-case= "N"
|
||
|
move end-sub to start-sub
|
||
|
go to case2.
|
||
|
case5.
|
||
|
move res-len to editlen.
|
||
|
move sub to editstart.
|
||
|
if def-sentence-case = "S" or "s"
|
||
|
perform convert-to-sentence
|
||
|
else
|
||
|
if def-data-name-case = "F" or "f"
|
||
|
perform convert-to-first
|
||
|
else
|
||
|
if def-data-name-case= "U" or "u"
|
||
|
perform convert-to-upper
|
||
|
else
|
||
|
if def-data-name-case = "L" or "l"
|
||
|
perform convert-to-lower.
|
||
|
move end-sub to start-sub.
|
||
|
go to case2.
|
||
|
case6.
|
||
|
move nay to perf-name-expected.
|
||
|
move alt1-name-expected to alt2-name-expected.
|
||
|
move nay to alt1-name-expected.
|
||
|
if def-proc-case = "N"
|
||
|
move end-sub to start-sub
|
||
|
go to case2.
|
||
|
case7.
|
||
|
move res-len to editlen.
|
||
|
move sub to editstart.
|
||
|
if def-sentence-case = "S" or "s"
|
||
|
perform convert-to-sentence
|
||
|
else
|
||
|
if def-proc-case = "F" or "f"
|
||
|
perform convert-to-first
|
||
|
else
|
||
|
if def-proc-case = "U" or "u"
|
||
|
perform convert-to-upper
|
||
|
else
|
||
|
if def-proc-case = "L" or "l"
|
||
|
perform convert-to-lower.
|
||
|
move end-sub to start-sub.
|
||
|
go to case2.
|
||
|
case-end.
|
||
|
exit.
|
||
|
next-word section.
|
||
|
next-w1.
|
||
|
perform find-char.
|
||
|
if start-sub > 72
|
||
|
go to next-wend.
|
||
|
if char = quote
|
||
|
if literal = yes
|
||
|
move nay to literal
|
||
|
add 1 to start-sub
|
||
|
go to next-w1
|
||
|
else
|
||
|
move yes to literal
|
||
|
add 1 to start-sub
|
||
|
go to next-w1.
|
||
|
if char = "."
|
||
|
move 1 to new-sentence-expected
|
||
|
if literal = nay
|
||
|
move nay to perf-name-expected
|
||
|
alt1-name-expected
|
||
|
alt2-name-expected
|
||
|
go-name-expected
|
||
|
pic-name-expected
|
||
|
add 1 to start-sub
|
||
|
go to next-w1
|
||
|
else
|
||
|
add 1 to start-sub
|
||
|
go to next-w1.
|
||
|
if literal = yes
|
||
|
add 1 to start-sub
|
||
|
go to next-w1.
|
||
|
move start-sub to end-sub.
|
||
|
move 1 to res-sub.
|
||
|
move spaces to res-word-buffer.
|
||
|
next-w2.
|
||
|
move char to res-word-buffer-char(res-sub).
|
||
|
add 1 to end-sub.
|
||
|
add 1 to res-sub.
|
||
|
if end-sub > 72
|
||
|
go to next-w3.
|
||
|
move so-rec-chr(end-sub) to char.
|
||
|
if char = space
|
||
|
go to next-w3
|
||
|
else if char = "."
|
||
|
move 1 to new-sentence-expected
|
||
|
go to next-w3.
|
||
|
go to next-w2.
|
||
|
next-w3.
|
||
|
perform reserved-or-not.
|
||
|
next-wend.
|
||
|
exit.
|
||
|
reserved-or-not section.
|
||
|
reserv1.
|
||
|
move 65 to editlen.
|
||
|
move 1 to editstart.
|
||
|
perform convert-resv-to-upper.
|
||
|
move nay to reserved.
|
||
|
move res-sub to res-len.
|
||
|
subtract 1 from res-len.
|
||
|
if res-sub < 3 or res-sub > 20
|
||
|
go to r20.
|
||
|
subtract 2 from res-sub.
|
||
|
go to r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
|
||
|
r16 r20 r20 r19
|
||
|
depending on res-sub.
|
||
|
r2.
|
||
|
move 0 to res-sub.
|
||
|
r2a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-2 go to r20.
|
||
|
if res02 = r2entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r2a.
|
||
|
r3.
|
||
|
move 0 to res-sub.
|
||
|
r3a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-3 go to r20.
|
||
|
if res03 = r3entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r3a.
|
||
|
r4.
|
||
|
move 0 to res-sub.
|
||
|
r4a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-4 go to r20.
|
||
|
if res04 = r4entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r4a.
|
||
|
r5.
|
||
|
move 0 to res-sub.
|
||
|
r5a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-5 go to r20.
|
||
|
if res05 = r5entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r5a.
|
||
|
r6.
|
||
|
move 0 to res-sub.
|
||
|
r6a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-6 go to r20.
|
||
|
if res06 = r6entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r6a.
|
||
|
r7.
|
||
|
move 0 to res-sub.
|
||
|
r7a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-7 go to r20.
|
||
|
if res07 = r7entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r7a.
|
||
|
r8.
|
||
|
move 0 to res-sub.
|
||
|
r8a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-8 go to r20.
|
||
|
if res08 = r8entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r8a.
|
||
|
r9.
|
||
|
move 0 to res-sub.
|
||
|
r9a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-9 go to r20.
|
||
|
if res09 = r9entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r9a.
|
||
|
r10.
|
||
|
move 0 to res-sub.
|
||
|
r10a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-10 go to r20.
|
||
|
if res10 = r10entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r10a.
|
||
|
r11.
|
||
|
move 0 to res-sub.
|
||
|
r11a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-11 go to r20.
|
||
|
if res11 = r11entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r11a.
|
||
|
r12.
|
||
|
move 0 to res-sub.
|
||
|
r12a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-12 go to r20.
|
||
|
if res12 = r12entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r12a.
|
||
|
r13.
|
||
|
move 0 to res-sub.
|
||
|
r13a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-13 go to r20.
|
||
|
if res13 = r13entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r13a.
|
||
|
r14.
|
||
|
move 0 to res-sub.
|
||
|
r14a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-14 go to r20.
|
||
|
if res14 = r14entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r14a.
|
||
|
r15.
|
||
|
move 0 to res-sub.
|
||
|
r15a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-15 go to r20.
|
||
|
if res15 = r15entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r15a.
|
||
|
r16.
|
||
|
move 0 to res-sub.
|
||
|
r16a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-16 go to r20.
|
||
|
if res16 = r16entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r16a.
|
||
|
r19.
|
||
|
move 0 to res-sub.
|
||
|
r19a.
|
||
|
add 1 to res-sub.
|
||
|
if res-sub > res-word-count-19 go to r20.
|
||
|
if res19 = r19entry(res-sub)
|
||
|
move yes to reserved
|
||
|
go to r20.
|
||
|
go to r19a.
|
||
|
r20.
|
||
|
if reserved = nay go to reserv-end.
|
||
|
if res-word-buffer not = "TO"
|
||
|
move nay to go-name-expected.
|
||
|
if res-word-buffer = "PIC" or "PICTURE" or "VALUE"
|
||
|
move yes to pic-name-expected
|
||
|
go to reserv-end
|
||
|
else
|
||
|
move nay to pic-name-expected.
|
||
|
if res-word-buffer = "PERFORM" or "THRU" or "THROUGH"
|
||
|
move yes to perf-name-expected
|
||
|
go to reserv-end.
|
||
|
if res-word-buffer = "ALTER"
|
||
|
move yes to alt1-name-expected
|
||
|
go to reserv-end.
|
||
|
if res-word-buffer = "GO"
|
||
|
move yes to go-name-expected
|
||
|
go to reserv-end.
|
||
|
reserv-end.
|
||
|
exit.
|
||
|
convert-to-upper section.
|
||
|
move editstart to ind-1.
|
||
|
move 1 to ind-2.
|
||
|
convert-to-upper-loop.
|
||
|
move so-rec-chr(ind-1) to temp-char
|
||
|
if temp-char-9 < 123 and temp-char-9 > 96
|
||
|
subtract 32 from temp-char-9
|
||
|
move temp-char to so-rec-chr(ind-1).
|
||
|
add 1 to ind-1
|
||
|
add 1 to ind-2.
|
||
|
if ind-2 not > editlen
|
||
|
go to convert-to-upper-loop.
|
||
|
|
||
|
convert-to-sentence section.
|
||
|
move editstart to ind-1.
|
||
|
move 1 to ind-2.
|
||
|
convert-to-sentence-loop.
|
||
|
move so-rec-chr(ind-1) to temp-char.
|
||
|
if start-of-sentence = 1
|
||
|
if temp-char-9 < 123 and temp-char-9 > 96
|
||
|
subtract 32 from temp-char-9
|
||
|
move temp-char to so-rec-chr(ind-1)
|
||
|
move 0 to new-sentence-expected
|
||
|
move 0 to start-of-sentence
|
||
|
else
|
||
|
if temp-char-9 < 91 and temp-char-9 > 64
|
||
|
move 0 to new-sentence-expected
|
||
|
move 0 to start-of-sentence
|
||
|
else
|
||
|
next sentence
|
||
|
else
|
||
|
if temp-char-9 < 91 and temp-char-9 > 64
|
||
|
add 32 to temp-char-9
|
||
|
move temp-char to so-rec-chr(ind-1).
|
||
|
add 1 to ind-1
|
||
|
add 1 to ind-2.
|
||
|
if ind-2 not > editlen
|
||
|
go to convert-to-sentence-loop.
|
||
|
|
||
|
|
||
|
convert-to-first section.
|
||
|
move editstart to ind-1.
|
||
|
move 1 to ind-2.
|
||
|
convert-to-first-loop.
|
||
|
move so-rec-chr(ind-1) to temp-char.
|
||
|
move so-rec-chr(ind-1 - 1) to prev-char
|
||
|
if prev-char-separator
|
||
|
if temp-char-9 < 123 and temp-char-9 > 96
|
||
|
subtract 32 from temp-char-9
|
||
|
move temp-char to so-rec-chr(ind-1)
|
||
|
else
|
||
|
next sentence
|
||
|
else
|
||
|
if temp-char-9 < 91 and temp-char-9 > 64
|
||
|
add 32 to temp-char-9
|
||
|
move temp-char to so-rec-chr(ind-1).
|
||
|
add 1 to ind-1
|
||
|
add 1 to ind-2.
|
||
|
if ind-2 not > editlen
|
||
|
go to convert-to-first-loop.
|
||
|
|
||
|
convert-to-lower section.
|
||
|
move editstart to ind-1.
|
||
|
move 1 to ind-2.
|
||
|
convert-to-lower-loop.
|
||
|
move so-rec-chr(ind-1) to temp-char
|
||
|
if temp-char-9 < 91 and temp-char-9 > 64
|
||
|
add 32 to temp-char-9
|
||
|
move temp-char to so-rec-chr(ind-1).
|
||
|
add 1 to ind-1
|
||
|
add 1 to ind-2.
|
||
|
if ind-2 not > editlen
|
||
|
go to convert-to-lower-loop.
|
||
|
|
||
|
convert-resv-to-upper section.
|
||
|
move editstart to ind-1.
|
||
|
move 1 to ind-2.
|
||
|
convert-resv-to-upper-loop.
|
||
|
move res-word-buffer-char(ind-1) to temp-char
|
||
|
if temp-char-9 < 123 and temp-char-9 > 96
|
||
|
subtract 32 from temp-char-9
|
||
|
move temp-char to res-word-buffer-char(ind-1).
|
||
|
add 1 to ind-1
|
||
|
add 1 to ind-2.
|
||
|
if ind-2 not > editlen
|
||
|
go to convert-resv-to-upper-loop.
|
||
|
|
||
|
find-char section.
|
||
|
if start-sub < 73
|
||
|
if so-rec-chr(start-sub) = space
|
||
|
add 1 to start-sub
|
||
|
go to find-char
|
||
|
else
|
||
|
move so-rec-chr(start-sub) to char
|
||
|
else
|
||
|
move space to char.
|
||
|
|
||
|
end program caseconv.
|