 |
SoftTree Technologies
Technical Support Forums
|
|
Author |
Message |
Robert Conatser
Joined: 02 Feb 2000 Posts: 28
|
|
Case nested inside ForNext |
|
I'm using 3.03 and get the error, "Invalid nesting, nested construct must not overlap parent construct boundaries." Here is my code: Dim DataFile,string, "D:\\tmp\\LogTableMonitor.dat" DIM line,string Dim b_line,boolean Dim LineNumber, Number DIM dt,date DIM tm,string DIM day,number Dim DayLoc,number Dim b_rtn,boolean Dim SQL,string DIM rows,number DIM msg,String DIM idx,number DIM dttm,datetime DIM Start_Time,string DIM End_Time,String DIM PROC_ID,NUMBER DIM STEP,STRING DIM MonDays,STRING // List of Monitor Days [1-7] Ex: '2,3,4,5,6' // 1 = Sunday, 2 = Monday, etc. DIM MonStartTime,string // Time to Start Monitoring Step DIM MonEndTime,string // Time to End Monitoring Step DIM LateStartTime,STRING // Latest time step must start DIM MinRunTime,NUMBER // Step must run for at least this many minutes. DIM MaxRunTime,NUMBER // Step must not run longer than this many minutes. Dim MinCount,Number Dim MaxCount,Number DIM Active,NUMBER // Set to 0 to turn Monitor off, 1 to turn Monitor on DIM chk,number DIM db_PROC_NAME,string DIM db_STEP_NAME,string DIM db_COUNT,string DIM db_ERROR_CODE,string DIM db_START_DATE,string DIM db_END_DATE,string SET b_line,FALSE SET LineNumber, 1 Today(dt) Now(tm) DateTime(dt,tm,dttm) DayNumber(dt,day) DatabaseConnect("Oracle TEST") LoopUntil b_line,END_DATAFILE FileReadLine (DataFile,LineNumber,line) isEqual(line,"",b_line) ifthen(b_line,END_DATAFILE) GetToken (",",Line,PROC_ID) GetToken (",",Line,Step) GetToken (",",Line,MonDays) GetToken (",",Line,MonStartTime) GetToken (",",Line,MonEndTime) GetToken (",",Line,LateStartTime) GetToken (",",Line,MinRunTime) GetToken (",",Line,MaxRunTime) GetToken (",",Line,MinCount) GetToken (",",Line,MaxCount) GetToken (",",Line,Active) add LineNumber,1,LineNumber IsEqual(Active,0,b_rtn) IfThen(b_rtn,NEXT_LINE) InStr(MonDays,day,1,DayLoc) isEqual(DayLoc,0,b_rtn) IfThen(b_rtn,NEXT_LINE) isTimeBetween(tm,MonStartTime,MonEndTime,b_rtn) Not(b_rtn,b_rtn) IfThen(b_rtn,NEXT_LINE) // Monitor Step SET(SQL,"Select PROC_NAME, STEP_NAME, COUNT, ERROR_CODE, START_DATE, END_DATE From LOGTABLE WHERE PROC_ID = ") ConcatEx(SQL,PROC_ID," AND STEP_NAME = '", STEP,"'",SQL) DatabaseRetrieve(SQL,rows) IsEqual(rows,0,b_rtn) IfThen(b_rtn,NO_LOG) ForNext(idx,1,ROWS,1,DB_CHECK) DatabaseGet(idx,1,db_Proc_Name) DatabaseGet(idx,2,db_Step_Name) DatabaseGet(idx,3,db_Count) DatabaseGet(idx,4,db_Error_Code) DatabaseGet(idx,5,db_Start_Date) DatabaseGet(idx,6,db_End_Date) MessageBox(db_STEP_Name) SET(chk,1) isLess(db_Count,MinCount,b_rtn) IfThen(b_rtn,ERROR) SET(chk,2) isGreater(db_Count,MaxCount,b_rtn) IfThen(b_rtn,ERROR) SET(chk,3) // IF Error_Code is 0 (Finished-no error) goto ERROR_CHK1 isEqual(db_ERROR_CODE,0,b_rtn) IfThen(b_rtn,ERROR_CHK1) // IF Error_Code is Not -1 (ruuning) goto ERROR NotEqual(db_ERROR_CODE,-1,b_rtn) IfThen(b_rtn,ERROR) DateTimeDiff(db_Start_Date,db_End_date,dttm) MessageBox(dttm) ERROR_CHK1: ERROR: ChooseCase(chk,END_CASE) Case 1 Set(Msg,"Min. Count treashold not reached.") Case 2 Set(Msg,"Max. Count treashold exceeded.") Case 3 Set(Msg,"Finished with Error.") CaseElse Set(Msg,"UnKnow Error occurred.") END_CASE: MessageBox(msg) DB_CHECK: GOTO NEXT_LINE NO_LOG: IsLess(tm,LateStartTime,b_rtn) Ifthen(b_rtn,Next_Line) SET (msg,"Past Start Time") ConcatEx(msg," - ",STEP," at ",LateStartTime,msg) MessageBox(msg) NEXT_LINE: END_DATAFILE: DatabaseDisconnect() EXIT
|
|
Mon Jun 18, 2001 5:17 pm |
|
 |
SysOp
Site Admin
Joined: 26 Nov 2006 Posts: 7948
|
|
Re: Case nested inside ForNext |
|
Please send this case to support@softtreetech.com : I'm using 3.03 and get the error, "Invalid nesting, nested construct : must not overlap parent construct boundaries." : Here is my code: Dim DataFile,string, : "D:\\tmp\\LogTableMonitor.dat" : DIM line,string : Dim b_line,boolean : Dim LineNumber, Number : DIM dt,date : DIM tm,string : DIM day,number : Dim DayLoc,number : Dim b_rtn,boolean : Dim SQL,string : DIM rows,number : DIM msg,String : DIM idx,number : DIM dttm,datetime : DIM Start_Time,string : DIM End_Time,String : DIM PROC_ID,NUMBER : DIM STEP,STRING : DIM MonDays,STRING // List of Monitor Days [1-7] Ex: '2,3,4,5,6' : // 1 = Sunday, 2 = Monday, etc. : DIM MonStartTime,string // Time to Start Monitoring Step : DIM MonEndTime,string // Time to End Monitoring Step : DIM LateStartTime,STRING // Latest time step must start : DIM MinRunTime,NUMBER // Step must run for at least this many minutes. : DIM MaxRunTime,NUMBER // Step must not run longer than this many minutes. : Dim MinCount,Number : Dim MaxCount,Number : DIM Active,NUMBER // Set to 0 to turn Monitor off, 1 to turn Monitor on : DIM chk,number : DIM db_PROC_NAME,string : DIM db_STEP_NAME,string : DIM db_COUNT,string : DIM db_ERROR_CODE,string : DIM db_START_DATE,string : DIM db_END_DATE,string : SET b_line,FALSE : SET LineNumber, 1 : Today(dt) : Now(tm) : DateTime(dt,tm,dttm) : DayNumber(dt,day) : DatabaseConnect("Oracle TEST") : LoopUntil b_line,END_DATAFILE : FileReadLine (DataFile,LineNumber,line) : isEqual(line,"",b_line) : ifthen(b_line,END_DATAFILE) : GetToken (",",Line,PROC_ID) : GetToken (",",Line,Step) : GetToken (",",Line,MonDays) : GetToken (",",Line,MonStartTime) : GetToken (",",Line,MonEndTime) : GetToken (",",Line,LateStartTime) : GetToken (",",Line,MinRunTime) : GetToken (",",Line,MaxRunTime) : GetToken (",",Line,MinCount) : GetToken (",",Line,MaxCount) : GetToken (",",Line,Active) : add LineNumber,1,LineNumber : IsEqual(Active,0,b_rtn) : IfThen(b_rtn,NEXT_LINE) : InStr(MonDays,day,1,DayLoc) : isEqual(DayLoc,0,b_rtn) : IfThen(b_rtn,NEXT_LINE) : isTimeBetween(tm,MonStartTime,MonEndTime,b_rtn) : Not(b_rtn,b_rtn) : IfThen(b_rtn,NEXT_LINE) : // Monitor Step : SET(SQL,"Select PROC_NAME, STEP_NAME, COUNT, ERROR_CODE, START_DATE, : END_DATE From LOGTABLE WHERE PROC_ID = ") : ConcatEx(SQL,PROC_ID," AND STEP_NAME = '", STEP,"'",SQL) : DatabaseRetrieve(SQL,rows) : IsEqual(rows,0,b_rtn) : IfThen(b_rtn,NO_LOG) : ForNext(idx,1,ROWS,1,DB_CHECK) : DatabaseGet(idx,1,db_Proc_Name) : DatabaseGet(idx,2,db_Step_Name) : DatabaseGet(idx,3,db_Count) : DatabaseGet(idx,4,db_Error_Code) : DatabaseGet(idx,5,db_Start_Date) : DatabaseGet(idx,6,db_End_Date) : MessageBox(db_STEP_Name) : SET(chk,1) : isLess(db_Count,MinCount,b_rtn) : IfThen(b_rtn,ERROR) : SET(chk,2) : isGreater(db_Count,MaxCount,b_rtn) : IfThen(b_rtn,ERROR) : SET(chk,3) : // IF Error_Code is 0 (Finished-no error) goto ERROR_CHK1 : isEqual(db_ERROR_CODE,0,b_rtn) : IfThen(b_rtn,ERROR_CHK1) : // IF Error_Code is Not -1 (ruuning) goto ERROR : NotEqual(db_ERROR_CODE,-1,b_rtn) : IfThen(b_rtn,ERROR) : DateTimeDiff(db_Start_Date,db_End_date,dttm) : MessageBox(dttm) : ERROR_CHK1: ERROR: ChooseCase(chk,END_CASE) : Case 1 : Set(Msg,"Min. Count treashold not reached.") : Case 2 : Set(Msg,"Max. Count treashold exceeded.") : Case 3 : Set(Msg,"Finished with Error.") : CaseElse : Set(Msg,"UnKnow Error occurred.") : END_CASE: MessageBox(msg) : DB_CHECK: GOTO NEXT_LINE : NO_LOG: IsLess(tm,LateStartTime,b_rtn) : Ifthen(b_rtn,Next_Line) : SET (msg,"Past Start Time") : ConcatEx(msg," - ",STEP," at ",LateStartTime,msg) : MessageBox(msg) : NEXT_LINE: END_DATAFILE: DatabaseDisconnect() : EXIT
|
|
Mon Jun 18, 2001 6:46 pm |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|