Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,60 @@
FUNCTION alignColumns RETURNS CHAR (
i_c AS CHAR,
i_calign AS CHAR
):
DEF VAR ipass AS INT.
DEF VAR iline AS INT.
DEF VAR icol AS INT.
DEF VAR iwidth AS INT EXTENT.
DEF VAR cword AS CHAR.
DEF VAR cspace AS CHAR.
DEF VAR cresult AS CHAR.
EXTENT( iwidth ) = NUM-ENTRIES( ENTRY( 1, i_c, "~n" ), "$" ).
DO ipass = 0 TO 1:
DO iline = 1 TO NUM-ENTRIES( i_c, "~n" ):
DO icol = 1 TO NUM-ENTRIES( ENTRY( iline, i_c, "~n" ), "$" ):
cword = ENTRY( icol, ENTRY( iline, i_c, "~n" ), "$" ).
IF ipass = 0 THEN
iwidth = MAXIMUM( LENGTH( cword ), iwidth[ icol ] ).
ELSE DO:
cspace = FILL( " ", iwidth[ icol ] - LENGTH( cword ) ).
CASE i_calign:
WHEN "left" THEN cresult = cresult + cword + cspace.
WHEN "right" THEN cresult = cresult + cspace + cword.
WHEN "center" THEN DO:
cword = FILL( " ", INTEGER( LENGTH( cspace ) / 2 ) ) + cword.
cresult = cresult + cword + FILL( " ", iwidth[icol] - LENGTH( cword ) ).
END.
END CASE. /* i_calign */
cresult = cresult + " ".
END.
END. /* DO icol = 1 TO ... */
IF ipass = 1 THEN
cresult = cresult + "~n".
END. /* DO iline = 1 TO ... */
END. /* DO ipass = 0 TO 1 */
RETURN cresult.
END FUNCTION.
DEF VAR cc AS CHAR.
cc = SUBSTITUTE(
"&1~n&2~n&3~n&4~n&5~n&6",
"Given$a$text$file$of$many$lines,$where$fields$within$a$line$",
"are$delineated$by$a$single$'dollar'$character,$write$a$program",
"that$aligns$each$column$of$fields$by$ensuring$that$words$in$each$",
"column$are$separated$by$at$least$one$space.",
"Further,$allow$for$each$word$in$a$column$to$be$either$left$",
"justified,$right$justified,$or$center$justified$within$its$column."
).
MESSAGE
alignColumns( cc, "left" ) SKIP
alignColumns( cc, "right" ) SKIP
alignColumns( cc, "center" )
VIEW-AS ALERT-BOX.