| Hi,
last week I've received the modified S2020_POST_EDIT.SCP script
d�rectly from CA Germany. For all who're interested see below:
Regards
Charly_from_CSC_Vienna
! S2020_POST_EDIT.SCP
! Ensure we have OA$CURDOC up to date
GET #ED_DOCUMENT = OA$CURDOC
CABINET CLEAR_CURDOC
CABINET CURRENT #ED_DOCUMENT
GET #2020_REP_MESS = ""
! If unreserved then simply update modified date
.IF CAB$.MAIL_STATUS[OA$CURDOC] EQS oa$sts_reserved -
THEN .GOTO RESERVED
CABINET EDIT
.GOTO NO_PROBLEMS
.LABEL RESERVED
!Get old reserve commment
FILECAB GET_ATTRIBUTES (DRAWER = OA$CURDWR, -
DOCUMENT = oA$CURDOC, -
#OLD_RCOM = RESERVED_COMMENT)
GET #OLD_RS_MODE = #OLD_RCOM:6
! Build key to access Reserve_List
GET #DRAWER_FULLPATH = OA$CURDWR_PARTITION "." '"' -
OA$CURDWR_LOCATION '"'
GET #RL_KEY = #DRAWER_FULLPATH:249 OA$CURDOC_DOCNUM
GET #DOC_FULLPATH = #DRAWER_FULLPATH "." -
'"' OA$CURDOC_FOLDER '".' OA$CURDOC_DOCNUM
! If there is no Reserve_List entry then stage 1 failed or we have been called
! with the wrong document. Just ignore it.
FOR RESERVE_LIST WITH .%KEY = #RL_KEY DO -
GET #RES_MODE = .RESERVATION_MODE
.IF OA$SEL_COUNT EQ 0 THEN .GOTO BAD
GET #RDN = RESERVE_LIST.DATE[#RL_KEY]
GET #EXPORT_FILENAME = LOG$OA$TEMP RESERVE_LIST.EXPORT_FILENAME[#RL_KEY]
GET #EXPORT_LOCATION = RESERVE_LIST.EXPORT_LOCATION[#RL_KEY]
GET #EXPORT_DRAWER = RESERVE_LIST.EXPORT_DRAWER[#RL_KEY]
GET #EXPORT_FOLDER = RESERVE_LIST.EXPORT_FOLDER[#RL_KEY]
GET #EXPORT_DOCNUM = RESERVE_LIST.EXPORT_DOCNUM[#RL_KEY]
.IF #2020_COMPLETION EQS "N" THEN .GOTO CANCEL_EDIT
.IF #EXPORT_LOCATION EQS FC$_LANG_RL_FILE THEN .GOTO REPLACE_FILE
.IF #EXPORT_LOCATION EQS FC$_LANG_RL_DOCUMENT THEN .GOTO REPLACE_DOC
! Copy = NONE. Unreserve document.
GET #2020_RES_COPY = "N"
FILECAB UNRESERVE_DOCUMENT (DOCUMENT = #DOC_FULLPATH, -
MODIFIED_NBS = OA$DATE_NBS, -
RESERVED_COMMENT = #OLD_RCOM)
.IF OA$STATUS NE 1 THEN .GOTO CANT_UNRESERVE
.GOTO RERESERVE
.LABEL CANCEL_EDIT
GET #2020_RES_COPY = "Y"
FILECAB UNRESERVE_DOCUMENT (DOCUMENT = #DOC_FULLPATH, -
RESERVED_COMMENT = #OLD_RCOM)
.IF OA$STATUS NE 1 THEN .GOTO CANT_UNRESERVE
.IF #OLD_RS_MODE EQS "S2020W" THEN .GOTO NO_PROBLEMS
.GOTO RERESERVE
.LABEL REPLACE_FILE
! Copy = FILE. Replace, delete temporary file.
.IF OA$DIR.NAME[#EXPORT_FILENAME] EQS "" THEN .GOTO CANCEL_EDIT
FILECAB REPLACE_DOCUMENT (DOCUMENT = #DOC_FULLPATH, -
CONTENT_ACTION = "IMPORT", -
CONTENT_FILENAME = #EXPORT_FILENAME, -
MODIFIED_NBS = OA$DATE_NBS, -
RESERVED_COMMENT = #OLD_RCOM)
.IF OA$STATUS NE 1 THEN .GOTO CANT_REPLACE
GET OA$FUNCTION = "DELETE_FILE " #EXPORT_FILENAME
GET #EDITED = "Y"
.GOTO RERESERVE
.LABEL REPLACE_DOC
! Copy = DOCUMENT. Replace, delete temporary document.
FILECAB REPLACE_DOCUMENT (DOCUMENT = #DOC_FULLPATH, -
WORK_DRAWER = #EXPORT_DRAWER, -
WORK_FOLDER = #EXPORT_FOLDER, -
WORK_DOCNUM = #EXPORT_DOCNUM, -
MODIFIED_NBS = OA$DATE_NBS, -
RESERVED_COMMENT = #OLD_RCOM)
.IF OA$STATUS NE 1 THEN .GOTO CANT_REPLACE
!-----
!
! the following part was modified for correctly function by
! deletion the temp. user-files
!
! old part begin ++++
!
FILECAB DELETE_DOCUMENT (DRAWER = #EXPORT_DRAWER, -
FOLDER = #EXPORT_FOLDER, -
DOCNUM = #EXPORT_DOCNUM)
!
! old part end -----
!
! new part begin +++++
!
GET #CUR_DRAWER = OA$CURDWR
GET #CUR_DOC = OA$CURDOC
CABINET SET_DRAWER #EXPORT_DRAWER
CABINET SELECT #EXPORT_FOLDER, #EXPORT_DOCNUM
CABINET DELETE_DOCUMENT
CABINET SET_DRAWER #CUR_DRAWER
!
! new part end -----
GET #EDITED = "Y"
.LABEL RERESERVE
WRITE DELETE RESERVE_LIST %KEY = #RL_KEY
.IF OA$STATUS NE 1 THEN .GOTO BAD_RL
! IF the reservation was done by a 20/20 /SW operation, then
! don't need to rereserve
! If the reservation was done by a 'E' or a 'C', and we are
! now done, we don't need to rereserve
.IF #OLD_RS_MODE EQS "S2020W" THEN .GOTO NO_PROBLEMS
.IF #2020_DONE EQS "Y" THEN .GOTO NO_PROBLEMS
.IF #RES_MODE = FC$_LANG_RL_USER THEN .GOTO RESERVE_AGAIN
!Reserved by 20/20, not the user
GET #USE_NODE = "N"
GET #2020_OP_TYPE = #OLD_RS_MODE
DO S2020_PRE_EDIT
.GOTO NO_PROBLEMS
.LABEL RESERVE_AGAIN
FILECAB RESERVE_DOCUMENT (DOCUMENT = #DOC_FULLPATH, -
RESERVED_COMMENT = #OLD_RCOM)
.IF OA$STATUS NE 1 THEN .GOTO CANT_RESERVE
WRITE ADD RESERVE_LIST -
FULLPATH1 = #RL_KEY:64:0, FULLPATH2 = #RL_KEY:64:64, -
FULLPATH3 = #RL_KEY:64:128, FULLPATH4 = #RL_KEY:57:192, -
FOLDER = OA$CURDOC_FOLDER, DOCNUM = OA$CURDOC_DOCNUM, -
DRAWER = OA$CURDWR, TITLE = OA$CURDOC_TITLE, -
DATE = #RDN, RESERVATION_MODE = FC$_LANG_RL_USER, -
EXPORT_LOCATION = FC$_LANG_RL_NONE, -
EXPORT_DRAWER = "", -
EXPORT_FOLDER = "", EXPORT_DOCNUM = "", -
EXPORT_FILENAME = ""
.IF OA$STATUS NE 1 THEN .GOTO BAD_RL
.LABEL NO_PROBLEMS
get #purge_count = FORMAT.PURGE[OA$CURDOC_FORMAT]
.if #purge_count eqs "" then -
get #purge_count = "1"
get #purge_file = OA$DIR_PARSE:"*.*".ALLBUTVER[OA$CURDOC_FILENAME]
get OA$FUNCTION = "PURGE_FILE " #purge_file "," #purge_count
.EXIT
.LABEL CANT_UNRESERVE
.GOTO APPEND_SUCCESS
.LABEL CANT_RESERVE
.GOTO APPEND_SUCCESS
.LABEL BAD_RL
.GOTO APPEND_SUCCESS
.LABEL CANT_REPLACE
GET #2020_REP_MESS = FC$_CANT_REPLACE_DOCUMENT
.GOTO BAD
.LABEL APPEND_SUCCESS
.LABEL BAD
get #purge_count = FORMAT.PURGE[OA$CURDOC_FORMAT]
.if #purge_count eqs "" then -
get #purge_count = "1"
get #purge_file = OA$DIR_PARSE:"*.*".ALLBUTVER[OA$CURDOC_FILENAME]
get OA$FUNCTION = "PURGE_FILE " #purge_file "," #purge_count
.EXIT
! S2020_POST_EDIT.SCP
! Process documents after a 20/20 write
|