Re: New puzzle
Posted in 1997
Sujit Pal <spal@scotch.den.csci.csc.com> wrote in article
<5rl8kt$l36@cssun.mathcs.emory.edu>...
> Paul
>
> 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
Make that a scroll cursor, also select count(*), and then FETCH ABSOLUTE:
DECLARE cstate SCROLL CURSOR FOR
SELECT state FROM statenames ORDER BY 1
OPEN cstate
SELECT count(*) INTO :statcnt FROM statenames
LET offs = (statcnt + 2) / 3
FOR i=1 TO offs
FETCH ABSOLUTE i cstate INTO :st1
FETCH ABSOLUTE (i + offs) INTO :st2
if (sqlca.sqlcode = NOTFOUND) THEN
LET st2=NULL
LET st3=NULL
endif
FETCH ABSOLUTE (i + (2 * offs)) INTO :st3
if (sqlca.sqlcode = NOTFOUND) THEN
LET st3=NULL
endif
DISPLAY st1, st2, st3
if (st3 = NULL) THEN
EXIT FOR
end if
END FOR
CLOSE cstate