$INCLUDE UNIVERSE.INCLUDE MTF.INCL.H
$INCLUDE UNIVERSE.INCLUDE FILENAMES.H
$INCLUDE UNIVERSE.INCLUDE MACHINE.NAME
$INCLUDE UNIVERSE.INCLUDE TLOG.H
******************************************************************************
*
* System Admin Transaction Logging - Tranfer Logs toMedia
*
* Module %M% Version %I% Date %H%
*
* (c) Copyright 1998 Ardent Software Inc. - All Rights Reserved
* This is unpublished proprietary source code of Ardent Software Inc.
* The copyright notice above does not evidence any actual or intended
* publication of such source code.
*
*******************************************************************************
*
* Maintenence log - insert most recent change descriptions at top
*
* Date.... GTAR# WHO Description........................................
* 10/14/98 23801 SAP Change copyrights.
* 08/26/96 18966 GMH Correct device field
* 03/25/96 18212 LAG Windows NT port
* 08/04/95 16158 DTM Fixed problem with releasing non-full files
* 03/09/95 15868 DTM Fixed problem where files were released even with error
* in backup
* 11/02/94 15225 DTM Added message of 'Working...'
* 10/12/94 15101 DTM Changed length of log number field
* 05/15/94 13286 DTM Initial programming
*
*******************************************************************************
id = "%W%"
******************
** Windows NT port
**
DEFFUN IS.FULLPATH(FILESPEC) CALLING "*IS.FULLPATH"
UV.TMP = SYSTEM(38)
TLSAVE.OK = UV.TMP:"/tlsave.ok"
**
******************
*******************************************************************************
TPRINT @(-1)
temp = NULL
CALL *ISUSER.B(0, temp)
IF temp = 0 THEN
TPRINT UVREADMSG(071000,"")
SLEEP 3
STOP
END
*******************************************************************************
GOSUB init.form
CALL *DRAW.SCRN.B( "Save Log Files", 1 )
GOSUB init.menu
CALL *MNU.BAR.PR.B(Menu.Bar,1)
*******************************************************************************
* Begin processing
*******************************************************************************
CALL *HELP.PRINT.B(UVREADMSG(073009,""),2)
CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1)
help.loop:
CALL *HELP.PRINT.B(form
,1)
input.loop:
TPRINT form:
temp=temp.form
CALL *CINPUT.B(SEC.PRMPT,temp,special,form,0)
IF special # 0 THEN
BEGIN CASE
CASE special = UP.ARROW
GOTO help.loop
CASE special = DOWN.ARROW
GOTO help.loop
CASE special = F.1
CALL *HELP.PRINT.B(form< form.line,5>,3)
GOTO input.loop
CASE special = ESCAPE
STOP @(-1)
CASE special = F.4
temp = "*"
GOTO new.enter
CASE special = F.10
action.value=1
CALL *DO.MNU.BAR.B(Menu.Bar,action.value,form.size,form,temp.form)
BEGIN CASE
CASE action.value = 1
STOP @(-1)
CASE action.value = 2
STOP @(-1)
CASE action.value = 3
message=UVREADMSG(073634,"")
CONVERT @FM TO " " IN message
CALL *HELP.BOX.B(3,10,60,message)
CASE action.value = 4
message=UVREADMSG(076001,"")
CONVERT @FM TO " " IN message
CALL *HELP.BOX.B(3,10,60,message)
CASE action.value = 5
CALL *HELP.BOX.B(3,10,45,UVREADMSG(076000,""))
END CASE
CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1)
GOTO help.loop
CASE 1
GOTO input.loop
END CASE
END
ELSE
BEGIN CASE
CASE form.line = 1
new.enter:
IF temp = "*" THEN
CALL *HELP.PRINT.B(UVREADMSG(073058,""),2)
help.message = CONVERT(@FM, " ", UVREADMSG(073644,""))
CALL *HELP.PRINT.B(help.message, 2)
sel.val = 1
CALL *PTBCODE(device.file,2,sel.val)
CALL *HELP.PRINT.B(NULL,3)
IF sel.val = -1 THEN
temp = NULL
CALL *PUT.FORM.B(form.size, form, temp.form, PRMPT,1)
GOTO help.loop
END
ELSE
temp = sel.val
temp.form=temp
END
CALL *PUT.FORM.B(form.size, form, temp.form, PRMPT, 1)
END
IF temp = NULL THEN
Blank.Message = @SYS.BELL:UVREADMSG(071004,"")
CALL *HELP.BOX.B(11,5,50,Blank.Message)
CALL *PUT.FORM.B(form.size, form, temp.form, PRMPT,1)
GOTO help.loop
END
tmpdev = temp
temp.form< form.line > = temp
CASE form.line = 2
IF temp MATCHES "0N" THEN
FirstLog = temp
temp.form< form.line > = temp
END
ELSE
message = "Answer must be a numeric value"
CALL *HELP.BOX.B(11,5,50,message)
temp.form = ""
CALL *PUT.FORM.B(form.size, form, temp.form, PRMPT,1)
GOTO help.loop
END
CASE form.line = 3
IF temp > LastLog THEN
message = "Range includes files not ready for transfer. Value must be less than or equal to ":LastLog
CALL *HELP.BOX.B(10,5,50,message)
temp.form = LastLog
CALL *PUT.FORM.B(form.size, form, temp.form, PRMPT,1)
GOTO help.loop
END
IF temp MATCHES "0N" THEN
LastLog = temp
temp.form< form.line > = temp
END
ELSE
message = "Answer must be a numeric value"
CALL *HELP.BOX.B(11,5,50,message)
temp.form = ""
CALL *PUT.FORM.B(form.size, form, temp.form, PRMPT,1)
GOTO help.loop
END
END CASE
TPRINT form:PRMPT:temp.form:
TPRINT STR(SPACE,16-LEN(temp.form)):
form.line+=1
IF form.line <= form.size THEN
GOTO help.loop
END
END
GOSUB transfer.release
CALL *HELP.BOX.B(17,5,50,UVREADMSG(001403,""))
STOP @(-1)
**********************************************************************
* transfer.release:
**********************************************************************
transfer.release:
;* Verify device
******************
** Windows NT port
**
IF IS.FULLPATH(tmpdev) THEN
DeviceName = tmpdev
END ELSE
READ tmpREC FROM device.file, tmpdev THEN
DeviceName = tmpREC<6>
END
ELSE
DeviceName = tmpdev
END
END
**
******************
msg = "Please prepare Tape Device and hit to back up files"
CALL *HELP.BOX.B(10,5,50, msg)
;* verify that the log numbers are sequential in number
FOR i = 1 TO id.number
IF id.array< i > # ( FirstLog - 1 + i ) THEN
msg = "Logs not in sequental order"
CALL *HELP.BOX.B(10,5,50, msg)
GOTO EXIT
END
NEXT i
;* Ok, verified that they are sequential in number
;* First, we should back them up to tape
PATH = ""
RECIO( PATH, RECIO$PATH )
exec.sentence = OS.EXEC:" '":UV.ROOT:"/bin/tlsave ":PATH:" -from "
exec.sentence := FirstLog:" -to ":LastLog:" -mt ":DeviceName:"'"
TPRINT @(-1)
PRINT "Backing up log file lg":FirstLog:" to lg":LastLog
EXECUTE exec.sentence
;* Did it work ?
******************
** Windows NT port
**
tl.fvar = ""
OPENSEQ TLSAVE.OK TO tl.fvar THEN
CLOSESEQ tl.fvar
PRINT "Finished with file backup"
PRINT "Now Releasing Files"
;* Now, files are backed up, need to release them
FOR i = FirstLog TO LastLog
PRINT "Release File lg":i
exec.sentence = "RELEASE.LFILE ":i
EXECUTE exec.sentence
NEXT i
CLOSE device.file
END
ELSE
PRINT "Error occured during back up of files... Files not released"
END
**
******************
RETURN
*************************************************************************
* Init.form
* This routine is used TO initialize the form TO be printed on the
* screen for data input. It also sets up the default answers, if
* any
*
*************************************************************************
init.form:
;* Get list of all qualified
EXECUTE "SSELECT UV_LOGS WITH STATUS = Full BY @ID TO 0" CAPTURING junk
READLIST id.array ELSE
;* If no logs with STATUS = Full are present...
msg = "No Logs are currently available (None are currently FULL)"
CALL *HELP.BOX.B(10,5,50, msg)
GOTO EXIT
END
id.number = DCOUNT( id.array, @FM )
FirstLog = id.array< 1 >
LastLog = id.array< id.number >
form = NULL
temp.form = NULL
temp.form<1> = "MT0"
temp.form<2> = FirstLog
temp.form<3> = LastLog
form.size = 3
form.line = 1
form<1,1> = @(5,7)
form<1,2> = @(30, 7)
form<1,3> = "Name of Device"
form<1,4> = "Name of the UniVerse device or Pathname from which to save."
form<1,5> = form<1,4>
form<1,6> = 45
form<2,1> = @(5,9)
form<2,2> = @(30, 9)
form<2,3> = "First Log to Backup"
form<2,4> = "Enter the number of the first log file to back up"
form<2,5> = form<1,4>
form<2,6> = 9
form<3,1> = @(5,11)
form<3,2> = @(30, 11)
form<3,3> = "Last Log to Backup"
form<3,4> = "Enter the number of the last log file to back up"
form<3,5> = form<1,4>
form<3,6> = 9
OPEN "","&DEVICE&" TO device.file ELSE
CALL *HELP.BOX.B( 5, 5, 50, "Cannot open &DEVICE& file!" )
STOP @(-1)
END
RETURN
***************************************************************************
* init.menu - initializes menu bar
***************************************************************************
init.menu:
scratch=UVREADMSG(073087,"")
Menu.Bar = NULL
Menu.Bar<1,1> = 3 ;* Number of Items in Menu.Bar
Menu.Bar<1,2> = 1 ;* Line # on which to print the Menu Bar
* First Item
Menu.Bar<2,1,1>=scratch<1> ;* SubMenu Title
Menu.Bar<2,1,2>=1 ;* # of items in SubMenu
* SubMenu #1
Menu.Bar<2,2,1>=scratch<6> ;* SubMenu Item
Menu.Bar<2,2,2>=1 ;* Action Code (Returned to calling process)
Menu.Bar<2,2,3>=scratch<7>
* Second Item
Menu.Bar<3,1,1>=scratch<8> ;* SubMenu Title
Menu.Bar<3,1,2>=1 ;* # of items in SubMenu
* SubMenu #1
Menu.Bar<3,2,1>=scratch<6> ;* SubMenu Item
Menu.Bar<3,2,2>=2 ;* Action Code
Menu.Bar<3,2,3>=scratch<7>
scratch=UVREADMSG(073089,"")
Menu.Bar<4,1,1>=scratch<1>
Menu.Bar<4,1,2>=3
Menu.Bar<4,2,1>=scratch<2>
Menu.Bar<4,2,2>=3
Menu.Bar<4,2,3>=scratch<3>
Menu.Bar<4,3,1>=scratch<4>
Menu.Bar<4,3,2>=4
Menu.Bar<4,3,3>=scratch<5>
Menu.Bar<4,4,1>=scratch<6>
Menu.Bar<4,4,2>=5
Menu.Bar<4,4,3>=scratch<7>
RETURN
EXIT:
STOP
END