;"QZREP506", AUTHOR: John F. Backus Version 3.0 (12/02/1998) ; An MPE/iX, POWERHOUSE (COGNOS) QUIZ 5.06 CODE DEVELOPMENT TOOL. ; Courtesy of Beechglen Development, Inc. ; The user accepts full responsibility for use of this software. ; NOTE: QZEZ506 is made available to anyone for their free usage ; given that the name of Beechglen Development, Inc. and the ; name of the author: John F. Backus remain in code & banner. ; This code is released as freeware. In no circumstances shall ; Beechglen Development be held responsible for its use. ; QZREP506 requires that the PowerHouse dictionary have defined in ; it: (DIRECT) FILE STD220, REC STD220, ELE DATA-LINE-220 of X(220) ;Known limitations: ; 1. Some limits are hard coded such as the total # of items ; that can be reported. One could study the code and make ; the appropriate adjustments. ; 2. Subitems are only correctly processed to 3 level deep. Ones ; that are defined any further levels down will require manual ; correction to the code that is generated. ALL subitems that ; are 2 or more levels deep are displayed on the screen as ".." ; 3. You must change the hardcoded 'RUN QUIZ' statement in this code. ;Recommendations: Drop into Quiz, then do a "use thiscode nolist" :PURGE Z506SH00 :PURGE Z506SH01 :PURGE Z506SH02 :PURGE Z506SH03 :PURGE Z506SH04 :PURGE Z506SH05 :PURGE Z506SH06 :PURGE Z506SH07 :PURGE Z506SH08 :PURGE Z506SH09 ;make Z506SH02 max file length = 2 times largest file's # of items :BUILD Z506SH02;REC=-220,1,F,ASCII;DISC=1000 DISP "QZREP506 Version 2.0 (Author: John F. Backus)" DISP " (Courtesy of Beechglen Development, Inc.)" DISP " " DISP " QZREP506's goal is to create a 220 Byte Ascii file named" DISP " Z506SH09. You can then rename this file and use it as" DISP " the base starting point for a QUIZ report. QZREP506 requires" DISP " answers to a few questions. You will be able to answer them" DISP " intelligently by basing your answers upon the data shown" DISP " as well as upon your 'common sense' of Quiz report writing." DISP " These questions are presented to you throughout the run." DISP " " DISP "(1) FILENAME(s)? (2) ITEMNAME ID#'s? (3) Use subfile format? " DISP "(4) Use compressed print? (5) # spaces between fields?" DISP " " CAN CLE SET DEF DISP " Examples on answering the (1st) question (44 bytes max):" DISP " " DISP "Parts...Parts Link To Orders...*Partsb...*Partsb Link To Orders" DEF FN1 CHA*44=PARM PROMPT & "(1) Enter filename or *subfilename?->" ON ERRORS REPROMPT 2 TIMES DEF ACCSTMNT CHA*70 = PACK("DEF ACCSTMNT CHA*44='ACC " + FN1 + "'") REP ACCSTMNT SET NOBL NOHE NOST NODUP NOVE NOWAR PAG WID 220 LEN 0 REP LIM 1 SET REP DEV DISC NAME Z506SH00 GO ;STEP using Z506SH00's defined access statement, create a usefile ; having data necessary to give a quiz show items of the file CAN CLE USE Z506SH00 NOL DEF SHOWSTMNT CHA*10="SHOW ITEMS" DEF EXITSTMNT CHA*04="EXIT" SET REP DEV DISC NAME Z506SH01 SET NOBL NOHE NOST NODUP PAG WID 220 LEN 0 REP ACCSTMNT SKI SHOWSTMNT SKI EXITSTMNT GO ;STEP using the use file qzxxshw1 having the quiz statements ; necessary to derive quiz output of the file's items, run a ; subprocess of quiz using qzxxshw1 as input, direct the output ; to the 220 byte file built earlier called qzxxshw2. :RUN QUIZ.CURRENT.COGNOS;INFO="AUTO=Z506SH01";STDLIST=Z506SH02 ;STEP there is no such file called qzxxshw2 in the dictionary, ; but by convention we have previously defined a file called ; STD220 which has one element: DATA-LINE-220 which we can 'file ; equate' to allow processing of any 220 byte file. :FILE STD220=Z506SH02 ;remove duplicate records created by redirect Quiz output now. Also ;we often are not interested in subitems or redefined items (as in ;creating a QTP subfile for use in reloading a dataset), let us give ;the user the chance to ignore these... ACC STD220 DEF IGNOR2 CHA*1 = PARM PROMPT & "(?) Ignore all subitems and redefined items (N) (Y/N)->" & UPSHIFT ON ERRORS REPROMPT 2 TIMES DEF REJECT-RECORD CHA*1 = & "Y" IF ((DATA-LINE-220[4:1] = "." & OR DATA-LINE-220[4:1] = "_") & AND IGNOR2 = "Y") & ELSE "N" SEL IF ( (DATA-LINE-220[3:1]=" " AND DATA-LINE-220[4:1] NE " " & AND DATA-LINE-220[1:1] = " " & AND DATA-LINE-220[2:3] NE "Q U") & AND (REJECT-RECORD = "N") & OR (DATA-LINE-220[2:1] = "*" & AND DATA-LINE-220[2:3] NE "*W*") ) DEF IT# NUM*3 = 1 DEF ITN CHA*24=DATA-LINE-220[4:24] IF DATA-LINE-220[4:1] NE "." ELS & DATA-LINE-220[5:23] IF DATA-LINE-220[4:1] EQ "." ;a sub item DEF ITD CHA*37 = DATA-LINE-220[29:37] SET SUBF NAME Z506SH03 KEEP SET NOBL NOST NODUP REP LIM 1000 ;NODUP VERY IMPORTANT! REP SUMM IT# SUBT ITN ITD GO CAN CLE SET DEF ACC *Z506SH03 ;access the subfile and report info to screen... DEF IT#2 CHAR*3 = ASCII(IT#,3) INIT HEA TAB 1 "Id# Item name" TAB 41 "Id# Item Name" SKI 1 & TAB 1 "--- ---------" TAB 41 "--- ---------" SKI 1 REP TAB 1 IT#2 TAB 6 ITN SET REP DEV TERM PAG LEN 0 WID 40 IMAG 2 NOST SET REP LIM 1000 GO ;STEP accept from the user the item nbrs desired. Then parse the ; data the user entered to create a large select statement CAN CLE SET DEF ACC *Z506SH03 DISP "Identically named items match to the file list as they occur." DISP "The code generated by QZREP506 will require the addition of" DISP "the 'OF FILENAME' qualifier for non-uniquely named items." DISP " Using the list above, choose the items (fields) that you" DISP " want to have appear in the REPORT statement. The items will" DISP " be listed in the order by which you now enter them..." DISP "Note that when entering #'s, YOU MUST enter the leading 0's." DISP " " DISP "Up to 30 #'s can be included OR excluded. To select all #'s, " DISP "just press carriage return to the prompt. You designate " DISP "inclusion or exclusion by entering a '+' or '-' in THE VERY" DISP "FIRST character entered ('+' = 'include' , '-' = 'exclude')." DISP "Examples: +001,002,009,010,011 or -005,012,044,045,046" DISP " " DISP "ENTER #'s CAREFULLY and DO NOT USE ANY INTERVENING SPACES." DISP "LEADING '+' or '-' IS REQUIRED. YOU GET ALL #'s IF NOT USED." DISP " " DEF SX1 CHA*120 = PARM PROMPT & "->" ON ERRORS REPROMPT 2 TIMES DEF I1 CHA*3 = SX1[2:3] IF SX1[2:3] NE ' ' ELS '0' DEF I2 CHA*3 = SX1[6:3] IF SX1[6:3] NE ' ' ELS '0' DEF I3 CHA*3 = SX1[10:3] IF SX1[10:3] NE ' ' ELS '0' DEF I4 CHA*3 = SX1[14:3] IF SX1[14:3] NE ' ' ELS '0' DEF I5 CHA*3 = SX1[18:3] IF SX1[18:3] NE ' ' ELS '0' DEF I6 CHA*3 = SX1[22:3] IF SX1[22:3] NE ' ' ELS '0' DEF I7 CHA*3 = SX1[26:3] IF SX1[26:3] NE ' ' ELS '0' DEF I8 CHA*3 = SX1[30:3] IF SX1[30:3] NE ' ' ELS '0' DEF I9 CHA*3 = SX1[34:3] IF SX1[34:3] NE ' ' ELS '0' DEF I10 CHA*3 = SX1[38:3] IF SX1[38:3] NE ' ' ELS '0' DEF I11 CHA*3 = SX1[42:3] IF SX1[42:3] NE ' ' ELS '0' DEF I12 CHA*3 = SX1[46:3] IF SX1[46:3] NE ' ' ELS '0' DEF I13 CHA*3 = SX1[50:3] IF SX1[50:3] NE ' ' ELS '0' DEF I14 CHA*3 = SX1[54:3] IF SX1[54:3] NE ' ' ELS '0' DEF I15 CHA*3 = SX1[58:3] IF SX1[58:3] NE ' ' ELS '0' DEF I16 CHA*3 = SX1[62:3] IF SX1[62:3] NE ' ' ELS '0' DEF I17 CHA*3 = SX1[66:3] IF SX1[66:3] NE ' ' ELS '0' DEF I18 CHA*3 = SX1[70:3] IF SX1[70:3] NE ' ' ELS '0' DEF I19 CHA*3 = SX1[74:3] IF SX1[74:3] NE ' ' ELS '0' DEF I20 CHA*3 = SX1[78:3] IF SX1[78:3] NE ' ' ELS '0' DEF I21 CHA*3 = SX1[82:3] IF SX1[82:3] NE ' ' ELS '0' DEF I22 CHA*3 = SX1[86:3] IF SX1[86:3] NE ' ' ELS '0' DEF I23 CHA*3 = SX1[90:3] IF SX1[90:3] NE ' ' ELS '0' DEF I24 CHA*3 = SX1[94:3] IF SX1[94:3] NE ' ' ELS '0' DEF I25 CHA*3 = SX1[98:3] IF SX1[98:3] NE ' ' ELS '0' DEF I26 CHA*3 = SX1[102:3] IF SX1[102:3] NE ' ' ELS '0' DEF I27 CHA*3 = SX1[106:3] IF SX1[106:3] NE ' ' ELS '0' DEF I28 CHA*3 = SX1[110:3] IF SX1[110:3] NE ' ' ELS '0' DEF I29 CHA*3 = SX1[114:3] IF SX1[114:3] NE ' ' ELS '0' DEF I30 CHA*3 = SX1[118:3] IF SX1[118:3] NE ' ' ELS '0' DEF SX2 CHA*70=PAC("SEL IF IT# = " + I1 + " OR IT# = " + I2 + & " OR IT# = " + I3 + " OR IT# = " + I4 + " OR IT# = " + I5 + " &") & IF SX1[1:1] = "+" & ELS PAC("SEL IF IT#<>" + I1 + " AND IT#<>" + I2 + & " AND IT#<>" + I3 + " AND IT#<>" + I4 + " AND IT#<>" + I5 + " &") & IF SX1[1:1] = "-" ELS " " DEF SX3 CHA*70=PAC(" OR IT# = " + I6 + " OR IT# = " + I7 + & " OR IT# = " + I8 + " OR IT# = " + I9 + " OR IT# = " + I10 + " &") & IF SX1[1:1] = "+" & ELS PAC("AND IT#<>" + I6 + " AND IT#<>" + I7 + & " AND IT#<>" + I8 + " AND IT#<>" + I9 + " AND IT#<>" + I10 + " &") & IF SX1[1:1] = "-" ELS " " DEF SX4 CHA*70=PAC(" OR IT# = " + I11 + " OR IT# = " + I12 + & " OR IT# = " + I13 + " OR IT# = " + I14 + " OR IT# = " + I15 + " &") & IF SX1[1:1] = "+" & ELS PAC("AND IT#<>" + I11 + " AND IT#<>" + I12 + & " AND IT#<>" + I13 + " AND IT#<>" + I14 + " AND IT#<>" + I15 + " &") & IF SX1[1:1] = "-" ELS " " DEF SX5 CHA*70=PAC(" OR IT# = " + I16 + " OR IT# = " + I17 & + " OR IT# = " + I18 + " OR IT# = " + I19 + " OR IT# = " + I20 + & " &" ) IF SX1[1:1] = "+" & ELS PAC("AND IT#<>" + I16 + " AND IT#<>" + I17 + & " AND IT#<>" + I18 + " AND IT#<>" + I19 + " AND IT#<>" + I20 + " &") & IF SX1[1:1] = "-" ELS " " DEF SX6 CHA*70=PAC(" OR IT# = " + I21 + " OR IT# = " + I22 + & " OR IT# = " + I23 + " OR IT# = " + I24 + " OR IT# = " + I25 + " &") & IF SX1[1:1] = "+" & ELS PAC("AND IT#<>" + I21 + " AND IT#<>" + I22 + & " AND IT#<>" + I23 + " AND IT#<>" + I24 + " AND IT#<>" + I25 + " &") & IF SX1[1:1] = "-" ELS " " DEF SX7 CHA*70=PAC(" OR IT# = " + I26 + " OR IT# = " + I27 & + " OR IT# = " + I28 + " OR IT# = " + I29 + " OR IT# = " + I30) & IF SX1[1:1] = "+" & ELS PAC("AND IT#<>" + I26 + " AND IT#<>" + I27 + & " AND IT#<>" + I28 + " AND IT#<>" + I29 + " AND IT#<>" + I30) & IF SX1[1:1] = "-" ELS " " DEF SX1-P1 CHA*20 = "DEF SX1 CHA*122 = &" DEF SX1-P2 CHA*122 = PACK("'" + SX1 + "'") REP SX2 SKI SX3 SKI SX4 SKI SX5 SKI SX6 SKI SX7 SKI SX1-P1 SKI SX1-P2 SET REP DEV DISC NAME Z506SH04 LIMIT 8 SET NOWAR NOHE NOST NODUP NOVER PAG LEN 0 WID 124 GO ;STEP now pass back at the original subfile containing all of ; the items in the file(or subfile) and use the use file ; just created to select only the items the user requested ; and report those items and affiliated data to a subfile. CAN CLE SET DEF ACC *Z506SH03 USE Z506SH04 NOL DEF A-IT# CHA*3 = ASCII(IT#,3) DEF SEL-REQUESTED CHA*1 = "Y" IF SX1 NE " " ELSE "N" DEF REP-SEQ NUM*3 = & 1 IF A-IT#=SX1[1:3] AND SEL-REQUESTED = "Y" & ELS 2 IF A-IT#=SX1[5:3] AND SEL-REQUESTED = "Y" & ELS 3 IF A-IT#=SX1[9:3] AND SEL-REQUESTED = "Y" & ELS 4 IF A-IT#=SX1[13:3] AND SEL-REQUESTED = "Y" & ELS 5 IF A-IT#=SX1[17:3] AND SEL-REQUESTED = "Y" & ELS 6 IF A-IT#=SX1[21:3] AND SEL-REQUESTED = "Y" & ELS 7 IF A-IT#=SX1[25:3] AND SEL-REQUESTED = "Y" & ELS 8 IF A-IT#=SX1[29:3] AND SEL-REQUESTED = "Y" & ELS 9 IF A-IT#=SX1[33:3] AND SEL-REQUESTED = "Y" & ELS 10 IF A-IT#=SX1[37:3] AND SEL-REQUESTED = "Y" & ELS 11 IF A-IT#=SX1[41:3] AND SEL-REQUESTED = "Y" & ELS 12 IF A-IT#=SX1[45:3] AND SEL-REQUESTED = "Y" & ELS 13 IF A-IT#=SX1[49:3] AND SEL-REQUESTED = "Y" & ELS 14 IF A-IT#=SX1[53:3] AND SEL-REQUESTED = "Y" & ELS 15 IF A-IT#=SX1[57:3] AND SEL-REQUESTED = "Y" & ELS 16 IF A-IT#=SX1[61:3] AND SEL-REQUESTED = "Y" & ELS 17 IF A-IT#=SX1[65:3] AND SEL-REQUESTED = "Y" & ELS 18 IF A-IT#=SX1[69:3] AND SEL-REQUESTED = "Y" & ELS 19 IF A-IT#=SX1[73:3] AND SEL-REQUESTED = "Y" & ELS 20 IF A-IT#=SX1[77:3] AND SEL-REQUESTED = "Y" & ELS NCONVERT(A-IT#) SORT ON REP-SEQ SET SUBF NAME Z506SH05 KEEP SET REP LIM 1000 NOWAR NOSTA REP SUMM REP-SEQ ITN ITD GO CAN CLE SET DEF ACC *Z506SH05 REPORT FIN FOO "DEF LAST-REQ-ITEM NUM*3 =" REP-SEQ SET NOBL NOHE NOST NODUP NOVE NOWAR PAG WID 220 LEN 0 REP LIM 1000 SET REP DEV DISC NAME Z506SH06 GO CAN CLE SET DEF ACC *Z506SH05 DEF FRACTION-CNT NUM*2 = NCONV(ITD[17:1]) ;0 IF NO FRACTINAL PART DEF WHOLE#-CNT NUM*2 = & 0 IF ITD[1:1]="N" AND ITD[22:1]=" " AND FRACTION-CNT=0 ELS & 1 IF ITD[1:1]="N" AND ITD[23:1]=" " AND FRACTION-CNT=0 ELS & 2 IF ITD[1:1]="N" AND ITD[24:1]=" " AND FRACTION-CNT=0 ELS & 3 IF ITD[1:1]="N" AND ITD[25:1]=" " AND FRACTION-CNT=0 ELS & 4 IF ITD[1:1]="N" AND ITD[26:1]=" " AND FRACTION-CNT=0 ELS & 5 IF ITD[1:1]="N" AND ITD[27:1]=" " AND FRACTION-CNT=0 ELS & 6 IF ITD[1:1]="N" AND ITD[28:1]=" " AND FRACTION-CNT=0 ELS & 7 IF ITD[1:1]="N" AND ITD[29:1]=" " AND FRACTION-CNT=0 ELS & 8 IF ITD[1:1]="N" AND ITD[30:1]=" " AND FRACTION-CNT=0 ELS & 9 IF ITD[1:1]="N" AND ITD[31:1]=" " AND FRACTION-CNT=0 ELS & 10 IF ITD[1:1]="N" AND ITD[32:1]=" " AND FRACTION-CNT=0 ELS & 11 IF ITD[1:1]="N" AND ITD[33:1]=" " AND FRACTION-CNT=0 ELS & 12 IF ITD[1:1]="N" AND ITD[34:1]=" " AND FRACTION-CNT=0 ELS & 13 IF ITD[1:1]="N" AND ITD[35:1]=" " AND FRACTION-CNT=0 ELS & 14 IF ITD[1:1]="N" AND ITD[36:1]=" " AND FRACTION-CNT=0 ELS & 15 IF ITD[1:1]="N" AND ITD[37:1]=" " AND FRACTION-CNT=0 ELS & 16 IF ITD[1:1]="N" AND ITD[38:1]=" " AND FRACTION-CNT=0 ELS & 17 IF ITD[1:1]="N" AND ITD[39:1]=" " AND FRACTION-CNT=0 ELS & 18 IF ITD[1:1]="N" AND ITD[40:1]=" " AND FRACTION-CNT=0 ELS & 19 IF ITD[1:1]="N" AND ITD[41:1]=" " AND FRACTION-CNT=0 ELS & 20 IF ITD[1:1]="N" AND ITD[42:1]=" " AND FRACTION-CNT=0 ELS & 21 IF ITD[1:1]="N" AND ITD[43:1]=" " AND FRACTION-CNT=0 ELS & 22 IF ITD[1:1]="N" AND ITD[44:1]=" " AND FRACTION-CNT=0 ELS & 0 IF ITD[1:1]="N" DEF INTEGER-CNT NUM*2 = & 0 IF ITD[1:1] = "N" AND ITD[22:1] = "." ELS & 1 IF ITD[1:1] = "N" AND ITD[23:1] = "." ELS & 2 IF ITD[1:1] = "N" AND ITD[24:1] = "." ELS & 3 IF ITD[1:1] = "N" AND ITD[25:1] = "." ELS & 4 IF ITD[1:1] = "N" AND ITD[26:1] = "." ELS & 5 IF ITD[1:1] = "N" AND ITD[27:1] = "." ELS & 6 IF ITD[1:1] = "N" AND ITD[28:1] = "." ELS & 7 IF ITD[1:1] = "N" AND ITD[29:1] = "." ELS & 8 IF ITD[1:1] = "N" AND ITD[30:1] = "." ELS & 9 IF ITD[1:1] = "N" AND ITD[31:1] = "." ELS & 10 IF ITD[1:1] = "N" AND ITD[32:1] = "." ELS & 11 IF ITD[1:1] = "N" AND ITD[33:1] = "." ELS & 12 IF ITD[1:1] = "N" AND ITD[34:1] = "." ELS & 13 IF ITD[1:1] = "N" AND ITD[35:1] = "." ELS & 14 IF ITD[1:1] = "N" AND ITD[36:1] = "." ELS & 15 IF ITD[1:1] = "N" AND ITD[37:1] = "." ELS & 16 IF ITD[1:1] = "N" AND ITD[38:1] = "." ELS & 17 IF ITD[1:1] = "N" AND ITD[39:1] = "." ELS & 18 IF ITD[1:1] = "N" AND ITD[40:1] = "." ELS & 19 IF ITD[1:1] = "N" AND ITD[41:1] = "." ELS & 20 IF ITD[1:1] = "N" AND ITD[42:1] = "." ELS & 21 IF ITD[1:1] = "N" AND ITD[43:1] = "." ELS & 22 IF ITD[1:1] = "N" AND ITD[44:1] = "." ELS & 0 IF ITD[1:1] = "N" DEF DECIMAL-POINT NUM*1 = 1 IF WHOLE#-CNT EQ 0 ELS 0 DEF ITEM-LGTH NUM*2 = 8 IF ITD[1:1] = "D" ELS & NCONV(ITD[24:1]) IF ITD[1:1] = "C" AND ITD[25:1] EQ ")" ELS & (INTEGER-CNT + FRACTION-CNT + WHOLE#-CNT + DECIMAL-POINT) DEF FLD-LGTHS-TOT NUM*4 = ITEM-LGTH REP SUMM REP-SEQ ITN ITD & ITEM-LGTH FLD-LGTHS-TOT SUBT SET SUBF NAME Z506SH07 KEEP SET REP LIM 1000 NOSTA NOVER NOWAR GO SET DEF CAN CLE ACC *Z506SH07 USE Z506SH06 NOL SEL IF REP-SEQ = LAST-REQ-ITEM REP " " SKI 1 "The total length of all fields selected is:" & FLD-LGTHS-TOT SKI 2 SET REP LIM 1 PAGE WIDTH 220 LENGTH 0 NOSTA NOVER NOWAR GO SET DEF CAN CLE ACC *Z506SH07 DISP "SUBFILE FORMAT REPORT FORMAT" DISP "-------------- -------------" DISP "REP SUM & REP &" DISP " ITEMnn1 & ;description TAB nnn ITEMnn1 & ;description" DISP " ITEMnn2 & ;description TAB nnn ITEMnn2 & ;description" DISP " ITEMnnn ;description TAB nnn ITEMnnn ;description" DISP " " DISP "SET SUBF NAME QZZZSUBF KEEP SET REP DEV PRINTER NAME PRINTER1" DISP " " DEF SUBFILE-FORMAT CHA*1 = PARM PROMPT & "(3) Create the report statement in subfile format?(Y/N)->" & UPSHIFT ON ERRORS REPROMPT 2 TIMES DEF IS-COMPRESSED CHA*1 = PARM PROMPT & "(4) Use a compressed (220 byte) output record?(Y/N)->" & UPSHIFT ON ERRORS REPROMPT 2 TIMES DEF SPACING NUM*2 = PARM PROMPT & "(5) Place how many spaces between each of the fields?->" & ON ERRORS REPROMPT 2 TIMES DEF SPACING-TOT NUM*4 = SPACING REP SUMM REP-SEQ ITN ITD SPACING SPACING-TOT SUBT & ITEM-LGTH FLD-LGTHS-TOT IS-COMPRESSED SUBFILE-FORMAT SET SUBF NAME Z506SH08 KEEP SET REP LIM 1000 NOSTA NOVER NOWAR GO SET DEF CAN CLE ACC *Z506SH08 USE Z506SH00 NOL USE Z506SH06 NOL DEF TAB-VALUE NUM*3 = 1 IF REP-SEQ = 1 ELS & (FLD-LGTHS-TOT - ITEM-LGTH) + (SPACING-TOT - SPACING) + 1 DEF A-TAB-VALUE CHA*3 = ASCII(TAB-VALUE,3) DEF REP-STAT CHA*10 = "REP SUM &" IF SUBFILE-FORMAT EQ "Y" & ELS "REPORT &" IF SUBFILE-FORMAT NE "Y" DEF TAB-STAT CHA*60= & PACK("TAB " + A-TAB-VALUE + " " + ITN + " &; ..." + ITD[22:16]) & IF REP-SEQ NE LAST-REQ-ITEM AND SUBFILE-FORMAT NE "Y" ELS & PACK("TAB " + A-TAB-VALUE + " " + ITN + " ; ..." + ITD[22:16]) & IF REP-SEQ EQ LAST-REQ-ITEM AND SUBFILE-FORMAT NE "Y" ELS & PACK(ITN + " &; ..." + ITD[22:16]) & IF REP-SEQ NE LAST-REQ-ITEM AND SUBFILE-FORMAT EQ "Y" ELS & PACK(ITN + " ; ..." + ITD[22:16]) & IF REP-SEQ EQ LAST-REQ-ITEM AND SUBFILE-FORMAT EQ "Y" DEF INIT-HEAD CHA*70 = PACK("INIT HEA " + "'&" + " k2S'" + & " SKI PAG ") IF IS-COMPRESSED = "Y" ELS " " DEF REP-DEV-STAT CHA*70 = "SET REP DEV PRINTER NAME PRINTER1" & IF SUBFILE-FORMAT NE "Y" ELSE "SET SUBFILE NAME QZZZSUBF KEEP" DEF REP-LIM-STAT CHA*14 = "SET REP LIM 10" DEF PAG-WID-STAT CHA*16 = "SET PAG WID 220" & IF IS-COMPRESSED = "Y" ELSE " " PAG HEA TAB 001 ACCSTMNT SKI INIT-HEAD SKI REP-STAT SKI REP TAB 003 TAB-STAT FIN FOO SKI 2 REP-DEV-STAT SKI REP-LIM-STAT SKI PAG-WID-STAT SKI "GO" SET REP DEV DISC NAME Z506SH09 SET PAG WIDT 220 LENG 0 REP LIM 1000 NOSTA NOWAR NOVER GO CAN CLE SET DEF :FILE STD220=Z506SH09 ACC STD220 PAG HEA & "The file Z506SH09 has been created for you, it contains" & SKI & "the following records:" SKIP 2 REP ALL SET PAG WIDT 222 LENG 0 REP LIM 1000 NOSTA NOWAR NOVER GO :PURGE Z506SH00 :PURGE Z506SH01 :PURGE Z506SH02 :PURGE Z506SH03 :PURGE Z506SH04 :PURGE Z506SH05 :PURGE Z506SH06 :PURGE Z506SH07 :PURGE Z506SH08 :PURGE QUIZSAVE,TEMP :RESET STD220 CAN CLE SET DEF