Alastair,

Just for giggles, I :
1.  set null to -0- Before the Unload
2. Got Rid of the While Loop (just to test)

and the following worked OK, but as Sami pointed out, use Run instead (You can
"Write 'Return'" at the end of your unload before output screen to be exactly
correct)

CLS
SET NULL -0-
CHDRV f:
CHDIR \rb7\samples
DISCONNECT

SET VAR vdblist      TEXT = NULL
SET VAR vitemname    TEXT = NULL
SET VAR vcycle1   INTEGER = NULL

SET VAR vdblist = 'ConComp,RRBYW4'
SET VAR vcount  = (itemcnt(.vdblist))
SET VAR vcycle1 = 0
--WHILE vcycle1 < .vcount THEN

  SET VAR vcycle1     = (.vcycle1 + 1)
--  SET VAR vitemname   = NULL
  SET VAR vitemname   = 'ConComp'
--  SET VAR vitemname   = (SSUB(.vdblist, .vcycle1))
  SET VAR voutputfile = (.vitemname + '.RLD')
  SET VAR voutputlob  = (.vitemname + '.LOB')
  SET VAR vcurrfiles  = (.vitemname + '.RB?')
  SET VAR vrenfiles   = (.vitemname + '._B?')
  CHDIR .vitemname
  CONNECT .vitemname
pause 4 using 'Begin Unload'
  OUTPUT .voutputfile
  UNLOAD ALL
  OUTPUT SCREEN
pause 4 using 'End Unload'
  DISCONNECT
pause 4 using 'Renaming Files'
  RENAME .vcurrfiles .vrenfiles
Pause 4 using 'Inputting Reload File'
  INPUT .voutputfile
  DISCONNECT
pause 4 using 'Deleting Files'
  DELETE .voutputfile
  DELETE .voutputlob
  DELETE .vrenfiles
--  CHDIR \dbfiles
--ENDWHILE
cls
pause 2 using 'Done'
RETURN


----- Original Message ----- 
From: "Alastair Burr" <[EMAIL PROTECTED]>
To: "RBG7-L Mailing List" <[email protected]>
Sent: Tuesday, January 11, 2005 1:08 PM
Subject: [RBG7-L] - Fw: [RBG7-L] - Unload/Input problem (Bug #71799) W98SE


Just following up on this problem:

I have reduced the code to this:

CLS
CHDRV c:
CHDIR \RBTI\RBG7\SAMPLES\DATABASES
DISCONNECT

SET VAR vDBList      TEXT = NULL
SET VAR vItemName    TEXT = NULL
SET VAR vCycle1   INTEGER = NULL

SET VAR vDBList = 'ConComp,RRBYW1'
SET VAR vCount  = (ITEMCNT(.vDBList))
SET VAR vCycle1 = 0
WHILE vCycle1 < .vCount THEN
  SET VAR vCycle1     = (.vCycle1 + 1)
  SET VAR vItemName   = NULL
  SET VAR vItemName   = (SSUB(.vDBList, .vCycle1))
  SET VAR vOutPutFile = (.vItemName + '.RLD')
  SET VAR vOutPutLob  = (.vItemName + '.LOB')
  SET VAR vCurrFiles  = (.vItemName + '.RB?')
  SET VAR vRenFiles   = (.vItemName + '._B?')
  CHDIR .vItemName
  CONNECT .vItemName
  OUT .vOutPutFile
    UNLOAD ALL
  OUT SCREEN
  DISCONNECT
  RENAME .vCurrFiles .vRenFiles
  INPUT .vOutPutFile
  DISCONNECT
  DEL .vOutPutFile
  DEL .vOutPutLob
  DEL .vRenFiles
  CHDIR \DBFILES
ENDWHILE

RETURN

I still get the error message:
Access violation at address 0101A515 in module 'RBENGINE.DLL'. Read of address
FFFFFFFF
after the end of the input command.
It seems that the INPUT command does not like anything to follow it - if using
a variable???
This works at the R:> INPUT ConComp.RLD
This also works at the R:> INPUT .vOutPutFile
This fails at the R:> INPUT .vOutPutFile; DISCONNECT

Can anybody confirm this, please?

Thanks & regards,
Alastair.

----- Original Message ----- 
From: Alastair Burr
To: RBG7-L Mailing List
Sent: Monday, January 03, 2005 9:16 AM
Subject: [RBG7-L] - Unload/Input problem


Please can anybody see what I am doing wrong here:

I have a program which appears to be written correctly - but remember that
RStyle does not report any errors for v7.x under W98SE so I am not 100% sure.
Nevertheless, I cannot find anything wrong and it seems to do everything
correctly.

However, right at the end of the input file I get this error message:

Access violation at address 0101A515 in module 'RBENGINE.DLL'. Read of address
FFFFFFFF

It apparently fails after the last command in the input file before returning
to my program. I don't know if it's relevant but the violation address has
changed with the installation of the latest beta (31/12/04).

After exiting from R:Base the new database appears to have been created without
any errors and the last command, a rule definition, has been applied.

I reported this as a bug a few weeks ago but RBTI/RDCC could not replicate it.
If I create a very simple version on my program and use it on ConComp neither
can I replicate it.

This is that short version:

SET VAR vDBtoReload TEXT = Reload.FLE
CONNECT CONCOMP

SET EOFCHAR ON
OUTPUT .vDBtoReload
  UNLOAD ALL
  SET VAR vError = .vErrVar
OUTPUT SCREEN
DISCONNECT

RENAME CONCOMP.RB? CONCOLD.RB?

INPUT &vDBtoReload
SET VAR vError = .vErrVar
DISCONNECT
RETURN

This is my much longer program. The various called files are used in many other
places are I am 100% sure that they work correctly. Pause_Sub.CMD command
produces a pause display while SetOwner.CMD forces entry of the owner password
and quits if it is not entered. Some variables are always available so are not
re-defined here:

*( FileName: UnLoad_ReLoad.CMD  ...  ...  Date of last amendment: 03/01/2005 )
*( Recreates the databases from UnLoad files.                                )
-- This line extends to 78 characters - - - - - - - - - - - - - - - - - - - ->
-- TRACE D:\DBCOPY\SOURCE\MULTIDAT\UnLoad_ReLoad.CMD

SET VAR vCaption = +
  'MultiDat Database - Maintenance: UnLoad and Input ALL Databases'
SET CAPTION .vCaption

SET VAR vCurrDB_Name       TEXT = NULL
SET VAR vCurrDB_ShortName  TEXT = NULL
SET VAR vCurrDB_DataPath   TEXT = NULL
SET VAR vCurrDB_SourcePath TEXT = NULL

SET VAR vBackDestination   TEXT = NULL
SET VAR vLocal_DataPath    TEXT = NULL

SET VAR vDBList            TEXT = NULL
SET VAR vDbtoReload        TEXT = NULL
SET VAR vItemName          TEXT = NULL

SET VAR vCycle1         INTEGER = NULL
SET VAR vDelFiles          TEXT = NULL

-- ---------------------------------------------------------------------------
-- Set user as supervisor:
-- ---------------------------------------------------------------------------
RUN D:\DBCOPY\SOURCE\MULTIDAT\SetOwner.CMD

-- ---------------------------------------------------------------------------
-- Start of main application:
-- ---------------------------------------------------------------------------
SET MULTI OFF
CONNECT .vControlDB
SELECT (LISTOF(Name_DataBase)) INTO vDBList FROM MultiDataBase +
  WHERE RBG_Version = .vVersion ORDER BY Name_DataBase
DISCONNECT
SET VAR vCount = (ITEMCNT(.vDBList))

CHDIR \DBFILES\MULTIDAT

SET VAR vCycle1 = 0
WHILE vCycle1 < .vCount THEN
  SET VAR vCycle1   = (.vCycle1 + 1)
  SET VAR vItemName = NULL
  SET VAR vItemName = (SSUB(.vDBList, .vCycle1))

  CONNECT .vControlDB

  SET VAR vCurrDB_Name = .vItemName
  SELECT ShortName INTO vCurrDB_ShortName FROM MultiDatabase +
    WHERE Name_DataBase = .vCurrDB_Name
  SELECT FileLocation INTO vCurrDB_DataPath FROM UserDirectories +
    WHERE Name_DataBase = .vCurrDB_Name AND DirectoryType = 'Data'

  DISCONNECT

  SET VAR vLocal_DataPath    = (.vCurrDB_DataPath + '\' + .vCurrDB_Name)
  SET VAR vDBtoReload        = (.vCurrDB_DataPath + '\' + .vCurrDB_ShortName +
'_COPY.FLE')
  SET VAR vDelFiles          = (.vCurrDB_DataPath + '\' + .vCurrDB_ShortName +
'_COPY.LOB')
  SET VAR vCurrDB_SourcePath = (.vLocal_DataPath + '.RB*')
  SET VAR vBackDestination   = ('ORIG_' + .vCurrDB_ShortName + '.RB*')

  SET VAR vMessage = ('Reloading' & .vCurrDB_Name & 'to new database')
  SET VAR vCaption = 'Please wait...'
  RUN D:\DBCOPY\SOURCE\MultiDat\Pause_Sub.CMD USING 3 INFO 0

-- ---------------------------------------------------------------------------
-- Connect to database:
-- ---------------------------------------------------------------------------
  CHDIR .vCurrDB_DataPath
  CONNECT .vCurrDB_Name
  SET VAR vError = .vErrVar
  IF vError <> 0 THEN
    DISCONNECT
    SET VAR vMessage = ('Error connecting to database:' & .vLocal_DataPath)
    SET VAR vCaption = 'ERROR!'
    RUN D:\DBCOPY\SOURCE\MultiDat\Pause_Sub.CMD USING 3 ERROR 0
    GOTO lEnd
  ENDIF
  SET NULL -0-

-- ---------------------------------------------------------------------------
-- Delete any old files:
-- ---------------------------------------------------------------------------
  SET ERROR MESSAGE 2077 OFF -- file not found
  ERASE &vDelFiles
  SET VAR vDelFiles = .vDBtoReload
  ERASE &vDelFiles
  SET VAR vDelFiles = .vBackDestination
  ERASE &vDelFiles
  SET ERROR MESSAGE 2077 ON

-- ---------------------------------------------------------------------------
-- Unload to file:
-- ---------------------------------------------------------------------------
  SET EOFCHAR ON  -- R:Base default is ON so ensure default set.
  OUTPUT .vDBtoReload
    UNLOAD ALL
    SET VAR vError = .vErrVar
  OUTPUT SCREEN
  DISCONNECT
  IF vError <> 0 THEN
    DISCONNECT
    SET VAR vMessage = ('Error creating UnLoad file for database:' &
.vDBtoReload)
    SET VAR vCaption = 'ERROR!'
    RUN D:\DBCOPY\SOURCE\MultiDat\Pause_Sub.CMD USING 3 ERROR 0
    GOTO lEnd
  ENDIF

-- ---------------------------------------------------------------------------
-- Rename current database:
-- ---------------------------------------------------------------------------
  RENAME &vCurrDB_SourcePath &vBackDestination
  SET VAR vError = .vErrVar
  IF vError <> 0 THEN
    DISCONNECT
    SET VAR vMessage = +
('Error renaming current database:' & .vCurrDB_SourcePath & 'to:' &
.vBackDestination)
    SET VAR vCaption = 'ERROR!'
    RUN D:\DBCOPY\SOURCE\MultiDat\Pause_Sub.CMD USING 3 ERROR 0
    GOTO lEnd
  ENDIF

-- ---------------------------------------------------------------------------
-- Create new database:
-- ---------------------------------------------------------------------------
  INPUT &vDBtoReload
-- Access violation at address 0101A515 in module 'RBENGINE.DLL'. Read of
address FFFFFFFF
-- Apparently fails after the last command in the file before returning here.
  SET VAR vError = .vErrVar
  DISCONNECT
  IF vError <> 0 THEN
    DISCONNECT
    SET VAR vMessage = ('Error loading data to new database:' & .vDBtoReload)
    SET VAR vCaption = 'ERROR!'
    RUN D:\DBCOPY\SOURCE\MultiDat\Pause_Sub.CMD USING 3 ERROR 0
    GOTO lEnd
  ENDIF

  SET VAR vMessage = (.vCurrDB_Name & 'Database created successfully')
  SET VAR vCaption = 'Multi-Database Reload:'
  RUN D:\DBCOPY\SOURCE\MultiDat\Pause_Sub.CMD USING 0 INFO 3
  CLS
ENDWHILE

SET ERROR MESSAGES OFF
GOTO lSkip
RETURN

LABEL lEnd
SET VAR vMessage = ('Error Encountered:' & .vMessage)
SET VAR vCaption = 'ERROR!'
SET VAR vButton  = 'Continue...'
RUN D:\DBCOPY\SOURCE\MultiDat\Pause_Sub.CMD USING 1 ERROR 0
SET VAR vButton  = 'Press any key to exit...'
RUN D:\DBCOPY\SOURCE\MultiDat\Pause_Sub.CMD USING 1 ERROR 0
EXIT

LABEL lSkip
DISCONNECT
SET VAR vFirstRun = 'Yes'
SET VAR vMessage  = 'All reloads successful!'
SET VAR vCaption  = 'Multi-Database Reload:'
SET VAR vButton   = 'Press any key to continue...'
RUN D:\DBCOPY\SOURCE\MultiDat\Pause_Sub.CMD USING 1 INFO 0
QUIT TO D:\DBFILES\MULTIDAT\v7_MultiDat.APP
RETURN
*( End of program )

Thanks in advance for any insights,
Regards,
Alastair.

----------------------------------
A D B Burr,
St. Albans, UK.
----------------------------------
[EMAIL PROTECTED]
----------------------------------

Reply via email to