` Printed Icetips Article

Icetips Article



Par2: Autoincrementing after record is added
1999-03-16 -- Andrew Guidroz II
 
The idea is that you can set up a file not to use the standard file class but to use this

file class instead and the autoinc happens when the record is truly added,  not before. 

Put both of these source files in your libsrc directory.

The bug is that C5 required two additional equates for 32 bits to work in the CLW file.

Here is the FileOver.INC

!ABCIncludeFile

OMIT('_EndOfInclude_',_FileOverPresent_)
_FileOverPresent_    EQUATE(1)
include('abfile.inc'),ONCE
FileManagerWOPreAutoInc 
CLASS(FileManager),TYPE,MODULE('FileOver.CLW'),LINK('FileOver.CLW',_ABC
LinkMode_),DLL(_ABCDLLMode_)
PrimeRecord                     PROCEDURE(BYTE SuppressClear = 0),BYTE,PROC,VIRTUAL
PrimeAutoInc                    PROCEDURE,BYTE,PROC,VIRTUAL
UseStandard     BYTE          ! Use standard technique of priming autoinc
FromPrime       BYTE,PRIVATE  ! Called from prime, therefore, do not use standard
technique
                              ! of priming
                        END
!_EndOfInclude_


And here is the FileOver.CLW


  MEMBER
_ABCDllMode_  EQUATE(0)
_ABCLinkMode_ EQUATE(1)
  MAP
  END
  INCLUDE('FileOver.INC'),ONCE
  INCLUDE('ABFile.INC'),ONCE

FileManagerWOPreAutoInc.PrimeRecord FUNCTION(BYTE SC)
    CODE
    SELF.FromPrime = CHOOSE( SELF.UseStandard, 0, 1 )
    RETURN PARENT.PrimeRecord()

FileManagerWOPreAutoInc.PrimeAutoInc    PROCEDURE
    CODE
      IF SELF.FromPrime
        SELF.FromPrime = 0
        RETURN Level:Benign
      ELSE
        RETURN Parent.PrimeAutoInc()  ! This line added so that the  record DOES
      END



Printed April 29, 2024, 8:50 am
This article has been viewed/printed 35107 times.