>SCAN > Replace MyPK with NewID() >EndSCAN >>
>FUNCTION NewID( tnStartID, tcAlias ) > >*Set PATH to FULLPATH('DATA') > >LOCAL lcAlias, lcOldReprocess, lnOldArea, lnCounter, lnStartID > >lnOldArea = SELECT() && Save current work area > >IF PARAMETERS() < 1 && Did we get an alias passed? > lcAlias = LOWER( ALIAS()) && If not, take the current one > lnStartID = 1 >ELSE && At least 1 param passed > lnStartID = tnStartID > If PARAMETERS() = 2 && Alias passed? > lcAlias = LOWER( tcAlias) > Else > lcAlias = LOWER( ALIAS()) > Endif >ENDIF > >lcOldReprocess = SET('REPROCESS') >SET REPROCESS TO AUTOMATIC && Lock until user presses Esc > >IF NOT USED( "COUNTER") > USE COUNTER IN 0 EXCLUSIVE >ENDIF >SELECT COUNTER > >IF not SEEK( lcAlias, "COUNTER", "TableName") > INSERT into COUNTER (TableName, Value) values ( lcAlias, lnStartID) >ELSE > IF RLOCK() > REPLACE COUNTER->value WITH COUNTER->value + 1 > UNLOCK > ENDIF >ENDIF >lnCounter = COUNTER.value >USE > >SELECT (lnOldArea) >SET REPROCESS TO lcOldReprocess > >RETURN lnCounter >ENDFUNC > >