RE: New puzzle
Posted in 1997
Paul
If this is a 4GL puzzle, the solution is quite simple. Heres a program without using arrays which will do this:
DATABASE test
MAIN
DEFINE st1, st2, st3 LIKE states.statename
DECLARE cStatename CURSOR FOR
SELECT statename FROM states
ORDER BY 1
OPEN cStatename
WHILE (1)
FETCH cStatename INTO st1
IF (sqlca.sqlcode = NOTFOUND) THEN
LET st1 = NULL
END IF
FETCH cStatename INTO st2
IF (sqlca.sqlcode = NOTFOUND) THEN
LET st2 = NULL
END IF
FETCH cStatename INTO st3
IF (sqlca.sqlcode = NOTFOUND) THEN
LET st3 = NULL
END IF
DISPLAY st1, st2, st3
IF (st1 IS NULL) OR (st2 IS NULL) OR (st3 IS NULL) THEN
EXIT WHILE
END IF
END WHILE
END MAIN
Instead of a DISPLAY you could send the contents out to a report.
Doing it with a single select would be tougher (or maybe impossible?).
HTH
Sujit
----------
OK, here's my 4GL reporting puzzle: how do I produce a report ordered
like this:
ALABAMA LOUISIANA OHIO
ALASKA MAINE OKLAHOMA
ARIZONA MARYLAND OREGON
ARKANSAS MASSACHUSETTS PENNSYLVANIA
CALIFORNIA MICHIGAN RHODE ISLAND
COLORADO MINNESOTA SOUTH CAROLINA
CONNECTICUT MISSISSIPPI SOUTH DAKOTA
DELAWARE MISSOURI TENNESSEE
FLORIDA MONTANA TEXAS
GEORGIA NEBRASKA UTAH
HAWAII NEVADA VERMONT
IDAHO NEW HAMPSHIRE VIRGINIA
ILLINOIS NEW JERSEY WASHINGTON
INDIANA NEW MEXICO WEST VIRGINIA
IOWA NEW YORK WISCONSIN
KANSAS N CAROLINA WYOMING
KENTUCKY NORTH DAKOTA
One way would be load up an array, but that would set a limit on the number
of elements we would handle (since the array has to be declared as of being
of some finite size). Is there a better way to do it?
- Paul