Structure for database: C:\DB4\SNAKE\MAILLIST.DBF Number of data records: 200 Date of last update : 01/02/91 Field Field Name Type Width Dec Index 1 FNAME Character 14 N 2 LNAME Character 15 N ** Total ** 30 Structure for database: C:\DB4\SNAKE\SNAKE.DBF Number of data records: 0 Date of last update : 01/02/91 Field Field Name Type Width Dec Index 1 COL1 Character 30 N 2 COL2 Character 30 N ** Total ** 61 *********************************************************** * SNAKE.PRG - Example of snaking columns * Generic dBASE code; easily converted to other versions * Tony Lima, 4/23/90 * Thanks to Rich Costa for valuable assistance debugging * this program. * Placed in the public domain; may be used as desired *********************************************************** * Database structure: * MAILLIST.DBF: * LNAME,C,15 * FNAME,C,14 * SNAKE.DBF * COL1,C,30 * COL2,C,30 * Housekeeping CLEAR CLEAR ALL SET TALK OFF SET SAFETY OFF SET STATUS OFF * ln_plngth is number of records per page ln_plngth = 50 * Open databases, indexing MAILLIST on LNAME (last name) SELECT 1 USE MAILLIST INDEX ON LNAME TO MAILLIST SELECT 2 USE SNAKE * Empty SNAKE.DBF in case there's anything left in it ZAP SELECT 1 GOTO TOP * Main DO WHILE loop DO WHILE .NOT. EOF() * ln_col keeps track of which column we're writing ln_col = 0 * Begin looping through columns DO WHILE ln_col<=2 ln_line = 1 ln_col = ln_col + 1 * If column counter >1, move pointer in SNAKE to top IF ln_col>1 SELECT 2 GO TOP ENDIF && ln_col = 2 * Process ln_plngth records DO WHILE (ln_line <= ln_plngth) .AND. (.NOT. EOF()) SELECT 2 * If first column, APPEND BLANK and REPLACE IF ln_col=1 APPEND BLANK SELECT 1 IF .NOT. EOF() SELECT 2 REPLACE COL1 WITH TRIM(MAILLIST->FNAME)+" "+MAILLIST->LNAME ELSE SELECT 2 ENDIF && .NOT. EOF() * If not first column, no need to APPEND BLANK ELSE REPLACE COL2 WITH TRIM(MAILLIST->FNAME)+" "+MAILLIST->LNAME SKIP ENDIF && ln_col = 1 SELECT 1 IF .NOT. EOF() SKIP ENDIF && .NOT. EOF() ln_line = ln_line + 1 ENDDO && WHILE (ln_line <= ln_plngth) .AND. (.NOT. EOF()) ENDDO && WHILE ln_col <= 2 SELECT 2 * Code to print contents of SNAKE.DBF goes here. * For example, DISPLAY ALL * LIST TO PRINT * Reset SNAKE.DBF and column pointer ZAP SELECT 1 ln_col = 1 ENDDO && WHILE .NOT. EOF() * Housekeeping SET SAFETY ON SET STATUS ON SET TALK ON CLEAR CLEAR ALL RETURN * EOF: SNAKE.PRG