I haven't tested it, but it looks like your code should work. Note that the Flash_Erase_Sector function erases only one 512 byte sector (in one of the four 64 kbyte Flash banks). If you want to erase a complete 64 kb block you must call the function 128 times (or you could use the Mass Erase command (FCMD = 0x41)).
Which block (and sector) to erase is selected with the far address in the call to the function: Block 0 consists of pages 3C..3F, block 1 = 38..3B, block 2 = 34..37 and block 3 = pages 30..33. So to erase the first sector of block 3 you should call the function with address 0x308000. The next 512 byte sector starts at 0x308200, a.s.o. up to the last sector of page 0x30 that starts at 0x30BE00. Then continue with page 31, 32 and 33 and the block 3 should be erased.