Sample code for 30+ languages & platforms
PowerBuilder

Generate Monotonic ULIDs

See more ULID/UUID Examples

Generate a sequence of monotonic ULIDs all using the same seed time. This code sample generates a series of ULIDs with continuously increasing values.

Important: Chilkat's ULID functionality was introduced in v9.5.0.94.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
oleobject loo_SeedDt
long li_Utc
string ls_Ulid
oleobject loo_SbUlid
long i

loo_SeedDt = create oleobject
li_rc = loo_SeedDt.ConnectToNewObject("Chilkat.CkDateTime")
if li_rc < 0 then
    destroy loo_SeedDt
    MessageBox("Error","Connecting to COM object failed")
    return
end if

//  You can set the seed time to any desired value.
//  In this example, the seed time is set to the current system date/time.
loo_SeedDt.SetFromCurrentSystemTime()

//  Generate the 1st ULID in the series.
//  (i.e. the current UTC UNIX-time)
li_Utc = 1
ls_Ulid = loo_SeedDt.UlidGenerate(li_Utc)
Write-Debug ls_Ulid

//  Store the ULID in a Chilkat StringBuilder to generate the series.
loo_SbUlid = create oleobject
li_rc = loo_SbUlid.ConnectToNewObject("Chilkat.StringBuilder")

loo_SbUlid.Append(ls_Ulid)

i = 0
do while i < 50
    loo_SeedDt.UlidIncrement(loo_SbUlid)
    Write-Debug loo_SbUlid.GetAsString()
    i = i + 1
loop

//  Sample output:

//  01GRGH30H8DMQ4F9A0XCTZHPGM
//  01GRGH30H8DMQ4F9A0XCTZHPGN
//  01GRGH30H8DMQ4F9A0XCTZHPGP
//  01GRGH30H8DMQ4F9A0XCTZHPGQ
//  01GRGH30H8DMQ4F9A0XCTZHPGR
//  01GRGH30H8DMQ4F9A0XCTZHPGS
//  01GRGH30H8DMQ4F9A0XCTZHPGT
//  01GRGH30H8DMQ4F9A0XCTZHPGV
//  01GRGH30H8DMQ4F9A0XCTZHPGW
//  01GRGH30H8DMQ4F9A0XCTZHPGX
//  01GRGH30H8DMQ4F9A0XCTZHPGY
//  01GRGH30H8DMQ4F9A0XCTZHPGZ
//  01GRGH30H8DMQ4F9A0XCTZHPH0
//  01GRGH30H8DMQ4F9A0XCTZHPH1
//  01GRGH30H8DMQ4F9A0XCTZHPH2
//  01GRGH30H8DMQ4F9A0XCTZHPH3
//  01GRGH30H8DMQ4F9A0XCTZHPH4
//  01GRGH30H8DMQ4F9A0XCTZHPH5
//  01GRGH30H8DMQ4F9A0XCTZHPH6
//  01GRGH30H8DMQ4F9A0XCTZHPH7
//  01GRGH30H8DMQ4F9A0XCTZHPH8
//  01GRGH30H8DMQ4F9A0XCTZHPH9
//  01GRGH30H8DMQ4F9A0XCTZHPHA
//  01GRGH30H8DMQ4F9A0XCTZHPHB
//  01GRGH30H8DMQ4F9A0XCTZHPHC
//  01GRGH30H8DMQ4F9A0XCTZHPHD
//  01GRGH30H8DMQ4F9A0XCTZHPHE
//  01GRGH30H8DMQ4F9A0XCTZHPHF
//  01GRGH30H8DMQ4F9A0XCTZHPHG
//  01GRGH30H8DMQ4F9A0XCTZHPHH
//  01GRGH30H8DMQ4F9A0XCTZHPHJ
//  01GRGH30H8DMQ4F9A0XCTZHPHK
//  01GRGH30H8DMQ4F9A0XCTZHPHM
//  01GRGH30H8DMQ4F9A0XCTZHPHN
//  01GRGH30H8DMQ4F9A0XCTZHPHP
//  01GRGH30H8DMQ4F9A0XCTZHPHQ
//  01GRGH30H8DMQ4F9A0XCTZHPHR
//  01GRGH30H8DMQ4F9A0XCTZHPHS
//  01GRGH30H8DMQ4F9A0XCTZHPHT
//  01GRGH30H8DMQ4F9A0XCTZHPHV
//  01GRGH30H8DMQ4F9A0XCTZHPHW
//  01GRGH30H8DMQ4F9A0XCTZHPHX
//  01GRGH30H8DMQ4F9A0XCTZHPHY
//  01GRGH30H8DMQ4F9A0XCTZHPHZ
//  01GRGH30H8DMQ4F9A0XCTZHPJ0
//  01GRGH30H8DMQ4F9A0XCTZHPJ1
//  01GRGH30H8DMQ4F9A0XCTZHPJ2
//  01GRGH30H8DMQ4F9A0XCTZHPJ3
//  01GRGH30H8DMQ4F9A0XCTZHPJ4
//  01GRGH30H8DMQ4F9A0XCTZHPJ5
//  01GRGH30H8DMQ4F9A0XCTZHPJ6


destroy loo_SeedDt
destroy loo_SbUlid