Home | The Company | Publications | Products | Links | Tips |
---|
Local SAM10L10 Library ICSYR2K DBID 201 FNR 234 Command > + I T L Name F Leng Index/....... Top - -------------------------------- - ---- -------------------------- V 1 CENTER-VU CENTER 2 CTR-NBR N 4.0 ..... .....
Copy the LDA into the YR2K environment
The ESCAPE statement may only be used within an active processing loop.
Recommended Action
3860 * ================================================================ 3870 DEFINE SUBROUTINE READ-DATES 3880 READ WORK FILE 1 ONCE #RECVBLS-DATES 3890 AT END OF FILE 3900 WRITE 3910 'SEVERE ERROR - RECEIVABLES DATES FILE EMPTY. RUN ABORTED.' 3920 TERMINATE 5016 3940 END-ENDFILE 3950 MOVE #RD-BEG-DATE TO #IN-FROM-DATE 3960 MOVE #RD-END-DATE TO #IN-THRU-DATE 3970 END-SUBROUTINE /* READ-DATES (3870) 3980 * ================================================================
3860 * ================================================================ 3870 DEFINE SUBROUTINE READ-DATES 3880 READ WORK FILE 1 ONCE #RECVBLS-DATES 3890 AT END OF FILE 3900 WRITE 3910 'SEVERE ERROR - RECEIVABLES DATES FILE EMPTY. RUN ABORTED.' 3920 * TERMINATE 5016 3930 TERMINATE 99 /* 2.2.8 CHANGE ERR 148 3940 END-ENDFILE 3950 MOVE #RD-BEG-DATE TO #IN-FROM-DATE 3960 MOVE #RD-END-DATE TO #IN-THRU-DATE 3970 END-SUBROUTINE /* READ-DATES (3870) 3980 * ================================================================
LDA definition 2 DMDC-CPON-ISSU-CCYYWK N 4.0 /* THE ISSUE YEAR AND WEEK
LDA definition 2 DMDC-CPON-ISSU-CCYYWK N 6.0 /* THE ISSUE YEAR AND WEEK
0890 INPUT WITH TEXT #MSG USING MAP 'IDR22M01' 0900 DECIDE FOR FIRST CONDITION 0910 WHEN *PF-KEY = 'ENTR' 0920 * 0930 * 0940 WHEN *PF-KEY = 'CLR' 0950 INCLUDE INV92C00
0880 * no empty DECIDE FOR ...... WHEN ...... 0885 * 0890 INPUT WITH TEXT #MSG USING MAP 'IDR22M01' 0900 DECIDE FOR FIRST CONDITION 0910 WHEN *PF-KEY = 'ENTR' 0920 IGNORE /* INSERTED, NO EMPTY WHEN (DS YR2K) 0930 * 0940 WHEN *PF-KEY = 'CLR' 0950 INCLUDE INV92C00
- Error Message Nr. NAT0273 -
Error 0166 in line 0280 of data area SPC30L30 processing OUTL-CLS
As indicated in the error message, an error has occurred in a specific line of a data area while processing a variable.
NAT0273 Error 0166 in line 0280 of data area SPC30L30 processing OUTL-CLS-CDE. >> + Subprogram SPC30N06 Lib ICSYR2K ....+....1....+....2....+....3....+....4....+....5....+.Mode Struct.. 0120* PERFORMS: NONE 0130* FETCHES: NONE 0140* MAPS: SPD30W02 0150* FILES: OUTLET 0160***************** M A I N T E N A N C E L O G *********** 0170* DATE NAME CSR SUMMARY OF CHANGES 0180* 09/24/97 D.GERBER IB96-010 CHANGE TO READ NEW LATE ADJ 0190* FILE; ELIMINATE WARNING IF 0200 * LATE ADJUSTMENTS EXIST 0210 * E 0220 DEFINE DATA 0230 PARAMETER 0240 1 #CTR-NBR (N4) 0250 1 #OUTL-NBR (N7) 0260 1 #INV-NBR (N5) 0270 1 #PARM-RET-CDE (N4) 0280 1 #RESET-INV-FLG (L) 0290 LOCAL USING SPC30L30
NAT0166 Invalid variable definition in DEFINE DATA statement. Local SPC30L30 Library ICSYR2K DBID 201 FNR 234 Command > + I T L Name F Leng Index/Init/EM/Name/Comment Top - -------------------------------- - ---- --------------------------- V 1 LATE-VU LATE-ADJUSTMENTS 2 CTR-NBR N 4.0 2 OUTL-NBR N 7.0 E 2 OUTL-CLS-CDE A 1 <<= not in DDM/View 2 PROD-CDE A 9
The field is not defined in the DDM/view.
An index was specified for a variable for which indexing is not permitted. Index specifications may only be used when defining/referencing an array. A database array can only be defined for a multiple-value field and for fields within a periodic group. When referencing an array, an index range specification was detected which exceeds the index range defined for one of its dimensions.
Local SGD40L00 Library ICSYR2K Command I T L Name F Leng Index/Init Top - -------------------------------- - ---- ---------- V 1 GDU-HIST-VU GDU-HISTOR 2 CTR-NBR N 4.0 2 TME-EDTN-CDE A 1 2 DAY-CDE N 1.0 E M 2 EDIT-EDTN-CDE A 1 (1:191) <=== ??? 2 EFFT-DTE N 8.0
Change the DDM/View (w/MU) or change the LDA (w/o MU)
When a multiple-value field or a field within a periodic group is referenced, an index must be specified to indicate the occurrence of the value to be selected. Default indices are created in WRITE or DISPLAY statements based on the setting of the session parameters MC and PC. A variable to be used as a variable index must have been previously defined before it can be used as an index notation. If a non-database field has been defined as an array, an index for each dimension must be specified when referencing the field.
1000 1 LATE-VW VIEW OF LATE-ADJUSTMENTS /* D.G. 9/97 1010 2 OUTL-NBR E 1020 2 DAY-CDE 1030 2 TME-EDTN-CDE 1040 2 FINANCIAL-RPTING-YRWK 1050 2 C*OUTL-ADJUSTMENTS 1060 2 ADJ-TYPE (1:99) 1070 2 ADJ-QTY (1:99)
DAY-CDE is no longer PE. The DDM/View was changed, see LATE-ADJUSTMENTS-OLD.
4410 WRITE (1) TITLE LEFT *PROGRAM 53T 'I C I S' 4420 // 4430 'REPORT DATE:' *DATU 40T 4440 'AGENT DRAW UPDATE JOURNAL - ACCEPTED TRANSACTIONS' 4450 115T 'PAGE:' 2X *PAGE-NUMBER(1) 4460 SKIP (1) 1
4405 * 4410 WRITE (1) TITLE LEFT *PROGRAM 53T 'I C I S' 4420 // 4430 'REPORT DATE:' *DATU 40T 4440 'AGENT DRAW UPDATE JOURNAL - ACCEPTED TRANSACTIONS' 4450 115T 'PAGE:' 2X *PAGE-NUMBER(1) 4460 ; SKIP (1) 1 /* 2.2.8Example
WRITE (3) TITLE 'title text' SKIP (3) 12 LINESPreviously, NATURAL accepted the above syntax and treated theSKIP as part of the WRITE TITLE statement. Now, NATURAL issues anerror, because a report number must not be specified within theSKIP clause of a WRITE TITLE statement.
WRITE (3) TITLE 'title text' SKIP 12 LINESor use a semicolon to turn the line into two separate statements:
WRITE (3) TITLE 'title text' ; SKIP (3) 12 LINES
MOVE (AD=YP) TO #ATTR MOVE (AD=IY) TO #ATTR
MOVE (AD=P) TO #ATTR MOVE (AD=I) TO #ATTR
1140 WRITE WORK FILE 2 #OUT-REC
1140 WRITE WORK FILE 2 VARIABLE #OUT-REC
The FS parameter has been set with a SET GLOBALS statement or GLOBALS command to indicate that no default format/length is to be used. Therefore the format/length of all user-defined variables must be explicitly specified.
0100 DEFINE DATA 0110 GLOBAL USING SGL00G00 0120 WITH MAIN-BLK.CUST-RES-BLK 0130 END-DEFINE 0140 * E 0150 RESET ##CR-STAT-BLK ##CR-ACCT-BLK1 ##CR-OUTL-BLK1 ##CR-OUTL-BLK2 0160 ##CR-IN-BLK ##CR-ACCT-BLK2 ##CR-OUTL-BLK3 ##CR-OUTL-BLK4 0170 * 0180 MOVE *PROGRAM TO #PROGRAM
0350 1 #NBR-OF-WKS (N3) 0360 1 #END-DATE-D (D) 0370 1 #START-DATE-D (D) 1000 COMPUTE #NBR-OF-WKS = (#END-DATE-D - #START-DATE-D) / 7
0340 1 #DAYS (N7) 0350 1 #NBR-OF-WKS (N3) 0360 1 #END-DATE-D (D) 0370 1 #START-DATE-D (D) 1000 COMPUTE #DAYS =(#END-DATE-D - #START-DATE-D) 1010 COMPUTE #NBR-OF-WKS =( #DAYS / 7)The first approach seems cleaner and easier, but, we have to have something to complain about and the two step compute is a simple solution.
* allowed DRAW BLOCK
* no longer allowed * see NATURAL Reference Manual - keywords and reserved words * page 283 - Appendix A
> + Program : IES99B01 Lib: LBYR2K ....+....1....+....2....+....3....+....4....+....5....+...MODE:Struct. 0170 ******************************************************************* 0180 READ CACC 0190 ADD 1 TO #CNT-REC 0200 IF CA-ACCT-STAT-CDE = 'I' 0210 ADD 1 TO #CNT-I <===== END-IF is missing 0220 * 0230 IF #I = 0 /* CANCELLED 0240 WRITE (01) 0250 11T CA-ACCT-NBR 0260 28T 'NO ACCOUNT STOP DATE FOR INACTIVE UNCANCELLED ACCOUNT' 0270 ESCAPE TOP 0280 END-IF 0290 * 0300 IF CASSD-ACCT-STP-DTE(#I) = 0 /* BAD DATA - NO ACCT STOP DATE 0310 ESCAPE TOP 0320 END-IF 0330 * 0340 IF CASSD-ACCT-STP-DTE(#I) GT 19900630 /* TOO RECENT 0350 ESCAPE TOP 0360 END-IF 0370 * 0380 ASSIGN #W-ACCT = CA-ACCT-NBR 0390 ASSIGN #W-STOP-DT = CASSD-ACCT-STP-DTE(#I) 0400 ASSIGN #W-CA-ISN = *ISN(0180) 0410 WRITE WORK FILE 1 #WORK-REC 0420 ADD 1 TO #REC-TOT 0430 * 0440 END-READ
> + Program : IES99B01 Lib: LBYR2K ....+....1....+....2....+....3....+....4....+....5....+...MODE:Struct. 0170 ******************************************************************* 0180 READ CACC 0190 ADD 1 TO #CNT-REC 0200 IF CA-ACCT-STAT-CDE = 'I' 0210 ADD 1 TO #CNT-I 0215 END-IF <===== END-IF inserted 0220 * 0230 IF #I = 0 /* CANCELLED 0240 WRITE (01) 0250 11T CA-ACCT-NBR 0260 28T 'NO ACCOUNT STOP DATE FOR INACTIVE UNCANCELLED ACCOUNT' 0270 ESCAPE TOP 0280 END-IF 0290 * 0300 IF CASSD-ACCT-STP-DTE(#I) = 0 /* BAD DATA - NO ACCT STOP DATE 0310 ESCAPE TOP 0320 END-IF 0330 * 0340 IF CASSD-ACCT-STP-DTE(#I) GT 19900630 /* TOO RECENT 0350 ESCAPE TOP 0360 END-IF 0370 * 0380 ASSIGN #W-ACCT = CA-ACCT-NBR 0390 ASSIGN #W-STOP-DT = CASSD-ACCT-STP-DTE(#I) 0400 ASSIGN #W-CA-ISN = *ISN(0180) 0410 WRITE WORK FILE 1 #WORK-REC 0420 ADD 1 TO #REC-TOT 0430 * 0440 END-READ
If a DEFINE DATA statement is present, all variables/fields to be used must be defined in the DEFINE DATA statement in an LDA, GDA or PDA, which are referenced with the keyword USING in the DEFINE DATA statement.
If this error occurs for a DDM and a DEFINE DATA statement is present, a view of the DDM (and of any database field referenced in the program) must be defined in the DEFINE DATA statement.
* #FIELD2 is redefined * RESET INITIAL #FIELD1 #FIELD2
RESET /* INITIAL: not with redefined fields #FIELD1 #FIELD2
... 0450 1 #ADDR-REC /* (A93) 0460 2 SUBS-ORD-ISN (N8) 0470 2 DDC-EFFT-DTE (N8) 0480 2 DDC-ACTV-STAT-CDE (A1) 0490 2 STR-SEG-GEO (N7) 0500 2 HA-STR-NBR (N7) 0510 2 HA-RM-NBR (A6) 0520 2 HA-STR-FRACTN (A3) 0530 2 C-LST-NME (A20) 0540 2 C-FST-NME (A20) 0550 2 C-INIT-NME (A1) 0560 2 C-CUST-TYP-CDE (A1) 0570 2 C-VIP-FLG (A1) 0580 2 CHA-PH-NBR (N10) ... 0620 1 CUST-ADDR VIEW OF CUSTOMER-ADDRESS 0630 2 STR-SEG-GEO 0640 2 HA-STR-NBR 0650 2 HA-RM-NBR 0660 2 HA-STR-FRACTN 0670 2 C-LST-NME 0680 2 C-FST-NME 0690 2 C-INIT-NME 0700 2 C-CUST-TYP-CDE 0710 2 C-VIP-FLG 0720 2 CHA-PH-NBR 0730 2 CHA-ADDR-TYP-CDE 0740 2 C*SUBS-DELV-DATA 0750 2 SUBS-DELV-DATA (1:31) 0760 3 DDC-EFFT-DTE 0770 3 DDC-ACTV-STAT-CDE 0780 3 SUBS-ORD-ISN ... 1240 MOVE BY NAME CUST-ADDR TO #ADDR-REC
... 0450 1 #ADDR-REC /* (A93) 0460 2 W-SUBS-ORD-ISN (N8) /* change field name (W-) 0470 2 W-DDC-EFFT-DTE (N8) /* change field name (W-) 0480 2 W-DDC-ACTV-STAT-CDE (A1) /* change field name (W-) 0490 2 STR-SEG-GEO (N7) 0500 2 HA-STR-NBR (N7) 0510 2 HA-RM-NBR (A6) 0520 2 HA-STR-FRACTN (A3) 0530 2 C-LST-NME (A20) 0540 2 C-FST-NME (A20) 0550 2 C-INIT-NME (A1) 0560 2 C-CUST-TYP-CDE (A1) 0570 2 C-VIP-FLG (A1) 0580 2 CHA-PH-NBR (N10) ... 0620 1 CUST-ADDR VIEW OF CUSTOMER-ADDRESS 0630 2 STR-SEG-GEO 0640 2 HA-STR-NBR 0650 2 HA-RM-NBR 0660 2 HA-STR-FRACTN 0670 2 C-LST-NME 0680 2 C-FST-NME 0690 2 C-INIT-NME 0700 2 C-CUST-TYP-CDE 0710 2 C-VIP-FLG 0720 2 CHA-PH-NBR 0730 2 CHA-ADDR-TYP-CDE 0740 2 C*SUBS-DELV-DATA 0750 2 SUBS-DELV-DATA (1:31) 0760 3 DDC-EFFT-DTE 0770 3 DDC-ACTV-STAT-CDE 0780 3 SUBS-ORD-ISN ... 1240 MOVE BY NAME CUST-ADDR TO #ADDR-REC /* move 1250 MOVE SUBS-ORD-ISN (1) TO W-SUBS-ORD-ISN /* first 1260 MOVE DDC-EFFT-DTE (1) TO W-DDC-EFFT-DTE /* occurency 1270 MOVE DDC-ACTV-STAT-CDE (1) TO W-DDC-ACTV-STAT-CDE /* to
0920 2 AGF-DRW-HIST-GRP (1:48) /* ADABAS field AA 0930 3 ADH-NET-CHG-QTY /* ADABAS field AB 0940 3 ADH-NET-CHG-RUN-DTE /* ADABAS field ACNATURAL creates from this definition for ADABAS the following format buffer with the values field name, length, data format: FB='AB1,010,A,AB2,010,A,AB3,010,A,.........AB48,010,A,AC1,020,U,AC2,020...' This way to define occurences of PE groups, multiple fields, or both causes a huge format buffer length.
0920 2 AGF-DRW-HIST-GRP /* ADABAS field AA 0930 3 ADH-NET-CHG-QTY (1:48) /* ADABAS field AB 0940 3 ADH-NET-CHG-RUN-DTE (1:48) /* ADABAS field ACNATURAL creates from this definition for ADABAS the following format buffer with the values field name, length, data format: FB='AB1-48,010,A,AC1-48,020,U.'
0060 IF *PF-KEY = 'ENTR' 0070 IF & NE 0 0080 HIST1. HISTOGRAM ZIP-VIEW ZIP & & 0090 END-HISTOGRAM 0100 IF *COUNTER(HIST1.) = 0 0110 REINPUT *63 MARK *& 0120 END-IF 0130 END-IF 0140 END-IF
0060 IF *PF-KEY = 'ENTR' 0070 IF & NE 0 0080 HIST1. HISTOGRAM ZIP-VIEW ZIP & /* <=== just one & 0090 END-HISTOGRAM 0100 IF *COUNTER(HIST1.) = 0 0110 REINPUT *63 MARK *& 0120 END-IF 0130 END-IF 0140 END-IF