19
Fri, Apr
5 New Articles

The Archive Documents Utility

CL
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

If you have OfficeVision documents on your system dating back several years, you may be paying a heavy price to store them online. If disk space problems are "haunting" you, you are a prime candidate for the utilities printed in this article.

The heart and soul of these utilities is based upon the premise that an office document takes considerably less space in a save file than in a document library object (DLO) folder. By storing your documents in save files on disk, you can cut a significant amount of disk space required for them. Our tests revealed that you can cut the amount of space required for your documents by more than one half.

In this article, we present a utility that allows you to selectively archive your office documents into online save files (based upon the creation date) and another that allows you to retrieve them. With the second utility, you can search for and select individual documents and instantly restore them back into folders.

Office Documents and the Hierarchical File System

One of the primary things making OfficeVision/400 different from other AS/400 applications is that OfficeVision/400 stores objects in a hierarchical file system.

The AS/400 relational database you are familiar with stores information in data files. These files contain records, each of which is formatted exactly the same. OfficeVision/400 groups data into files containing variable length records, which are in turn indexed in larger groups called folders. The folders do not contain data, but simply act as a directory (much like a library).

The documents created by OfficeVision/400, generally referred to as DLOs, are a unique type of object, and they have a unique set of tools to manage them. Key GO CMDDLO on your system to get a menu of the various commands that you may run to work with DLO objects.

Our observation has been that DLO might also stand for DASD Lost in Oblivion. The amount of disk absorbed by these objects is what is truly "frightening." Unfortunately, we cannot offer you a lot of insight as to where all of the DASD goes, but we might be able to help you do something about it.

We set out to minimize this condition, and this utility helped us realize our goal. Our hope is that you will find it useful as well.

Deciphering the Code

Compile all of the code shown in Figures 1 through 7 and you are potentially ready to save a great deal of disk space. The Archive Folders Utility contains two parts: copying the documents into a save file and then restoring them to a folder on command.

The ARCDOC command drives the first function. When you run this command, it asks for the name of the folder and a range of dates between which documents have been created (revision date would have been better, but was not available in the outfile used to create our summary file). It also requests the name and library of the save file that will hold the compressed documents. If the save file already exists, the ARCDOC utility aborts and sends a message informing the user of the situation.

If you decide to use this utility, you should be aware of several things. Since the ARCDOC command uses fields that are defined with a *DATE type, specific rules are automatically applied to the date fields. For example, if you specify 010101 as a date field, the system automatically converts the date to January 1, 2000.

Also, there is minimal error handling. For example, a user might attempt to save documents for a date range, yet no documents are found that fall within the range. The user will not be informed that no documents were saved. However, the job log can be examined to determine what documents were saved. You should find a message for every document saved that reads "Document xxx moved from folder xxx." The user will also not be informed if the folder path is invalid. Here again, the job log can be examined.

The ARC001RG program is the heart of the function and is shown in 4. After initializing some work fields, the ARC001RG program opens the requested folder (also called a directory) using the Open Directory API (QHFOPNDR). The Open Directory API returns an internal system name (commonly referred to as a handle) that the Read Directory API (QHFRDDR) uses to actually read the directory entries.

The ARC001RG program is the heart of the function and is shown in Figure 4. After initializing some work fields, the ARC001RG program opens the requested folder (also called a directory) using the Open Directory API (QHFOPNDR). The Open Directory API returns an internal system name (commonly referred to as a handle) that the Read Directory API (QHFRDDR) uses to actually read the directory entries.

While opening the directory we define the attributes (fields) that the Read Directory API returns. To do this, we use the table name parameter (TABSPC) and the table length parameter specified when we call the Open Directory API. If you leave the table name blank and use negative 1 (-1) as a field length (as we have done here), all standard attributes will be returned when the directory is read. The particular attribute that interests us in this example is QCRTDTTIM, which is the date and time the document was created.

For the next step in the ARC001RG program, we established a loop to read all the directory entries in the folder we opened. The Read Directory API (QHFRDDR) returns the actual number of directory entries read (NUMRDR) on each call to the API. When all directory entries have been read, this field is returned as zero. It returns the actual document names (along with other information, such as size and date created) in the field DIRBUF, which we move into an array in order to strip out the document name and creation date. If the document creation date is within the date range keyed, the MOVEIT subroutine is called, and the next document is processed. The MOVEIT subroutine moves the document into a temporary holding folder called ARCHIVE.

After all the documents have been processed, we close the directory and execute the WRTSUM subroutine before setting on LR. The subroutine uses QCMDEXC to execute the Save Document Library Object (SAVDLO) command saving all the documents in the ARCHIVE folder into the designated save file. It also deletes the documents from the ARCHIVE folder and creates an "outfile" (ARCDOCS) with one record for each document saved to the save file.

The ARCDOCS file uses the system file QAOJSAVO for its format that has a record length of 777 bytes. Since the whole purpose of this utility is to save space, this is clearly unacceptable. So the last functions the WRTSUM subroutine performs are reading the ARCDOC outfile and writing the pertinent fields into our archived documents file named ARCDOCPF.

The second part of the utility is a simple subfile selection RPG program over the ARCDOCPF summary file we created in the previous example. Figures 5, 6, and 7 show the Work with Archived Documents (WRKARCDOC) command, the ARC002DF display file, and the ARC002RG program.

The ARC002RG program displays the file of archived documents and allows you to search for the document alphabetically by document name or to select a document to be restored (as seen in 8). If you choose the restore option, a prompt is displayed for the Restore DLO (RSTDLO) command, and the document may be restored from the save file to a folder. Once restored, you may work with the document as if it were never archived at all.

The ARC002RG program displays the file of archived documents and allows you to search for the document alphabetically by document name or to select a document to be restored (as seen in Figure 8). If you choose the restore option, a prompt is displayed for the Restore DLO (RSTDLO) command, and the document may be restored from the save file to a folder. Once restored, you may work with the document as if it were never archived at all.

Error handling is limited in ARC002RG. You may sometimes receive generic error messages that don't let you know what the specific problem is. For example, if you attempt to restore a document to a folder that doesn't exist, you'll receive the generic error message "Error occurred during processing of command." If you receive a generic message, go to the job log to obtain more detail. You could easily embellish the ARC002RG program by adding a few additional options that would allow you to view and position the subfile by folder name, description, or document creation date. We omitted these functions from this program in the interest of brevity.

Disk Space Problems: A "Ghost" from the Past

Okay. We really cannot promise that your disk space problems will go away. What we can promise, though, is that this utility is a step in the right direction if your shop uses OfficeVision/400 for document processing.

By archiving our documents, we were able to take a small 1.13MB folder and "archive" it into a save file that required less than 170KB. The original folder was reduced to less than 131KB, and the file records in the ARCDOCPF file required less than 30KB. The sum total of these components was 331KB as compared to the original 1.13MB. That is a DASD savings of more than 70 percent!

While this utility is not the ultimate panacea for all OfficeVision/400 users, it could very well give you a little breathing room in regard to your disk storage problems, "witch" ain't a bad thing!

Doug Pence is the founder and Ron Hawkins is the research and development manager of Computer Processing Unlimited, Inc. in San Diego, California.


The Archive Documents Utility

Figure 1: Physical File ARCDOCPF

 *=============================================================== * To compile: * * CRTPF FILE(XXX/ARCDOCPF) SRCFILE(XXX/QDDSSRC) * *=============================================================== *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 A R ARCFMT A DOCNAM 12 COLHDG('Document name') A FOLDER 63 COLHDG('Folder name') A SDLSFL 10 COLHDG('Save file lib') A SDLSFN 10 COLHDG('Save file name') A DATARC 7 COLHDG('Date archived') A DOCCRT 7 COLHDG('Date doc created') A DOCDSC 32 COLHDG('Description') A K DOCNAM A K FOLDER A K SDLSFL A K SDLSFN *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
The Archive Documents Utility

Figure 2: Command ARCDOC

 /*===============================================================*/ /* To compile: */ /* */ /* CRTCMD CMD(XXX/ARCDOC) PGM(XXX/ARC001CL) + */ /* SRCFILE(XXX/QCMDSRC) */ /* */ /*===============================================================*/ CMD PROMPT('Archive Documents') PARM KWD(FRMDATE) TYPE(*DATE) MIN(1) PROMPT('From + creation date') PARM KWD(TODATE) TYPE(*DATE) MIN(1) PROMPT('To + creation date') PARM KWD(FLR) TYPE(*CHAR) LEN(63) MIN(1) + PROMPT('Folder') PARM KWD(SAVF) TYPE(QUAL) MIN(1) PROMPT('Save file') QUAL: QUAL TYPE(*NAME) LEN(10) QUAL TYPE(*NAME) LEN(10) DFT(*CURLIB) + SPCVAL((*CURLIB)) PROMPT('Library') 
The Archive Documents Utility

Figure 3: CL Program ARC001CL

 /*===============================================================*/ /* To compile: */ /* */ /* CRTCLPGM PGM(XXX/ARC001CL) SRCFILE(XXX/QCLSRC) */ /* */ /*===============================================================*/ PGM PARM(&FRMDATE &TODATE &FLR &SAVF) DCL VAR(&FLR) TYPE(*CHAR) LEN(63) DCL VAR(&FRMDATE) TYPE(*CHAR) LEN(7) DCL VAR(&TODATE) TYPE(*CHAR) LEN(7) DCL VAR(&SAVF) TYPE(*CHAR) LEN(20) DCL VAR(&ERR) TYPE(*CHAR) LEN(1) DCL VAR(&MSG) TYPE(*CHAR) LEN(7) DCL VAR(&DTA) TYPE(*CHAR) LEN(100) /* If archive folder does not exist, create it */ CHKOBJ OBJ(ARCHIVE) OBJTYPE(*FLR) MONMSG MSGID(CPF9801) EXEC(DO) CRTFLR FLR(ARCHIVE) MONMSG MSGID(CPF0000) ENDDO /* If designated save file does not exist, create it */ CHKOBJ OBJ(%SST(&SAVF 11 10)/%SST(&SAVF 1 10)) + OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(DO) CRTSAVF FILE(%SST(&SAVF 11 10)/%SST(&SAVF 1 10)) GOTO CMDLBL(SKIP) ENDDO SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Save + file' *BCAT %SST(&SAVF 11 10) *TCAT '/' + *CAT %SST(&SAVF 1 10) *BCAT 'already + exists') MSGTYPE(*ESCAPE) SKIP: CALL PGM(ARC001RG) PARM(&FRMDATE &TODATE &FLR + &SAVF &ERR &MSG &DTA) IF COND(&ERR *EQ 'Y') THEN(SNDPGMMSG + MSGID(&MSG) MSGF(QCPFMSG) MSGDTA(&DTA) + MSGTYPE(*ESCAPE)) ENDPGM: ENDPGM 
The Archive Documents Utility

Figure 4: RPG Program ARC001RG

 *=============================================================== * To compile: * * CRTRPGPGM PGM(XXX/ARC001RG) SRCFILE(XXX/QRPGSRC) * *=============================================================== *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 H Y FQAOJSAVOIF E DISK UC FARCDOCPFO E DISK E AB 2000 1 ICMDDS IDS 512 I DS I B 1 40TABLEN I B 5 80DIRBLN I B 9 120NUMDIR I B 13 160NUMDRD I B 17 200LENDIR I B 21 240DIRPLN IDIRBUF DS 2000 IBINARY DS 40 I B 1 40O IBIN1 DS 40 I B 1 40AO IATRIBS DS 40 I B 5 80VL I 13 20 ANAME I 13 17 NAME5 IERR DS 116 I I B 1 40VAR1 I B 5 80BYTAVA I 9 15 MSGID I 16 16 ERR### I 17 116 MSGDTA I '10 ' C DIROCN I 'MOVDOC FROMDOC(' C MOVCON I ') FROMFLR(''' C FRMCON I ''') TOFLR(ARCHIVE)' C TOFCON I 'SAVDLO DLO(*ALL) FLR-C SAVCON I '(ARCHIVE) DEV(*SAVF)- I ' SAVF(' I ') STG(*DELETE) OUTPU-C STGCON I 'T(*OUTFILE) OUTFILE(- I 'ARCDOCS) DTACPR(*YES- I ')' I 'OVRDBF FILE(QAOJSAVO-C OVRCON I ') TOFILE(ARCDOCS)' C *ENTRY PLIST C PARM FRDATE 7 C PARM TODATE 7 C PARM FOLDER 63 C PARM SAVFIL 20 C PARM ERROR 1 C PARM MSG 7 C PARM DTA 100 C MOVE FRDATE FRMDAT 70 C MOVE TODATE TODAT 70 C MOVELSAVFIL SAVFF 10 C MOVE SAVFIL SAVFL 10 C SAVFL CAT '/':0 LIBFIL 21 C CAT SAVFF:0 LIBFIL C '/QDLS/' CAT FOLDER:0 DIRPAT 69 P C MOVE DIROCN DIROIF C Z-ADD116 VAR1 C Z-SUB1 TABLEN C CALL 'QHFOPNDR' C PARM DIRHND 16 C PARM DIRPAT C PARM 69 DIRPLN C PARM DIROIF 6 C PARM ' ' TABSPC200 C PARM TABLEN C PARM ERR C BYTAVA IFGT 0 C MOVEL'Y' ERROR C MOVELMSGID MSG C MOVELMSGDTA DTA C ELSE C NUMDRD DOUEQ0 C CALL 'QHFRDDR' C PARM DIRHND C PARM DIRBUF C PARM 2000 DIRBLN C PARM 10 NUMDIR C PARM NUMDRD C PARM LENDIR C PARM ERR C MOVEADIRBUF AB,1 C MOVEAAB,1 BINARY C Z-ADDO NUMENT 40 C Z-ADD1 X 40 C DO NUMENT C ADD 4 X C MOVEAAB,X BINARY C ADD 1 O C Z-ADDO P 40 C P ADD 4 I 40 C MOVEAAB,O BINARY C Z-ADDO AT# 40 C DO AT# C MOVEAAB,I BIN1 C ADD P AO C MOVEAAB,AO ATRIBS C NAME5 IFEQ 'QNAME' C AO ADD 17 AP 40 C MOVEAAB,AP DOCNAM 12 P C VL SUBSTDOCNAM:1 DOCNAM P C ENDIF C ANAME IFNE 'QCRTDTTM' C ADD 4 I C ITER C ENDIF C ADD 20 AO C MOVEAAB,AO ACCESD 7 C MOVE ACCESD ACCDAT 70 C ACCDAT IFGE FRMDAT C ACCDAT ANDLETODAT C EXSR MOVEIT C ENDIF C LEAVE C ENDDO C ENDDO C ENDDO C CALL 'QHFCLODR' C PARM DIRHND C PARM ERR C SAVCON CAT LIBFIL:0 CMDDS P C CAT STGCON:0 CMDDS C Z-ADD140 LEN 155 C CALL 'QCMDEXC' C PARM CMDDS C PARM LEN C EXSR WRITSM C END C MOVE *ON *INLR *=============================================================== C MOVEIT BEGSR C MOVCON CAT DOCNAM:0 CMDDS P C CAT FRMCON:0 CMDDS C CAT FOLDER:0 CMDDS C CAT TOFCON:0 CMDDS C Z-ADD512 LEN 155 C CALL 'QCMDEXC' 99 C PARM CMDDS C PARM LEN C ENDSR *=============================================================== C WRITSM BEGSR C Z-ADD60 LEN 155 C MOVELOVRCON CMDDS P C CALL 'QCMDEXC' 99 C PARM CMDDS C PARM LEN C OPEN QAOJSAVO C *IN50 DOUEQ*ON C READ QAOJSAVO 50 C *IN50 IFEQ *OFF C SDLTYP ANDEQ02 C MOVE UDATE DATARC C MOVELSDSDTC DATARC C MOVE SDLCDT DOCCRT C MOVELSDCDTC DOCCRT C MOVELSDLDOC DOCNAM C MOVELSDLDSC DOCDSC C WRITEARCFMT C ENDIF C ENDDO C ENDSR *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
The Archive Documents Utility

Figure 5: Command WRKARCDOC

 /*===============================================================*/ /* To compile: */ /* */ /* CRTCMD CMD(XXX/WRKARCDOC) PGM(XXX/ARC002RG) + */ /* SRCFILE(XXX/QCMDSRC) */ /* */ /*===============================================================*/ CMD PROMPT('Work with Archived Documents') 
The Archive Documents Utility

Figure 6: Display File ARC002DF

 *=============================================================== * To compile: * * CRTDSPF FILE(XXX/ARC002DF) SRCFILE(XXX/QDDSSRC) * *=============================================================== *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 A DSPSIZ(24 80 *DS3) A CA03(03) A CA12(03) A R SFLRCD SFL A SFLRRN 4S 0H A HDSAVF 10A H A HDSAVL 10A H A SFLSEL 1A B 7 2DSPATR(HI) A ZDOCNM 12A O 7 6 A ZDATAR 6Y 0O 7 23EDTCDE(Y) A ZDATCR 6Y 0O 7 33EDTCDE(Y) A ZDESC 32A O 7 43 A ZFOLDR 63A O 8 6 A R SFLCTL SFLCTL(SFLRCD) A SFLSIZ(0008) A SFLPAG(0007) A 21 SFLDSP A SFLDSPCTL A OVERLAY A 25 SFLCLR A 41 SFLEND(*MORE) A N41 ROLLUP(27) A ROLLDOWN(28) A RRN 4 0H SFLRCDNBR A 1 27'Work with' A DSPATR(HI) A 1 37'Archived Documents' A DSPATR(HI) A 3 2'Type options,' A COLOR(BLU) A 3 45'Position to . . . . .' A INDOCN 12A B 3 68 A 4 4'1=Restore' A COLOR(BLU) A 6 1'Opt Document/Folder' A DSPATR(HI) A 6 23'Archived Created' A DSPATR(HI) A 6 43'Description' A DSPATR(HI) A 3 16'press Enter.' A COLOR(BLU) A R MSGSFL SFL A SFLMSGRCD(24) A MSGKEY SFLMSGKEY A PGMQ SFLPGMQ A R MSGCTL SFLCTL(MSGSFL) A OVERLAY A SFLDSP A SFLDSPCTL A N03 SFLEND A SFLINZ A SFLPAG(0001) A SFLSIZ(0002) A PGMQ SFLPGMQ A R FKEYS A 23 2'F3=Exit' A COLOR(BLU) A 23 12'F12=Cancel' A COLOR(BLU) *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
The Archive Documents Utility

Figure 7: RPG Program ARC002RG

 *=============================================================== * To compile: * * CRTRPGPGM PGM(XXX/ARC002RG) SRCFILE(XXX/QRPGSRC) * *=============================================================== *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 FARC002DFCF E WORKSTN F RRN KSFILE SFLRCD FARCDOCPFIF E K DISK IDATE7 IDS I 2 3 YR I 4 70MD I SDS I 1 10 PGMQ I IDS I B 1 40STKCNT I B 5 80ERRCOD I 'RSTDLO ?*DLO(' C RSTCN1 I ') ?*SAVFLR(ARCHIVE) -C RSTCN2 I '??RSTFLR(''' I ''') ?*DEV(*SAVF) ??S-C RSTCN3 I 'AVF(' C *IN03 DOUEQ*ON C *IN27 DOUEQ*OFF C *IN28 ANDEQ*OFF C EXSR LODSFL C WRITEFKEYS C WRITEMSGCTL C EXFMTSFLCTL C CALL 'QMHRMVPM' C PARM PGMQ C PARM STKCNT C PARM *BLANKS MSGKY 4 C PARM '*ALL' MSGRMV 10 C PARM ERRCOD C *IN28 CASEQ*ON ROLLB C ENDCS C ENDDO C *IN03 IFEQ *OFF C INDOCN IFNE *BLANKS C INDOCN SETLLARCDOCPF C MOVE *BLANKS INDOCN C ITER C ENDIF C EXSR PROCES C ENDIF C ENDDO C MOVE *ON *INLR *=============================================================== C LODSFL BEGSR C *IN27 IFEQ *OFF C MOVEA'00001' *IN,21 C WRITESFLCTL C Z-ADD0 RRN 25 C END C Z-ADD0 X C X DOUEQ7 C READ ARCDOCPF 41 C *IN41 IFEQ *ON C *HIVAL SETLLARCDOCPF C READPARCDOCPF 68 C LEAVE C ENDIF C ADD 1 X 40 C MOVELFOLDER ZFOLDR C MOVELDOCNAM ZDOCNM C MOVELDOCDSC ZDESC C MOVE DATARC DATE7 C MOVELMD ZDATAR P C MOVE YR ZDATAR C MOVE DOCCRT DATE7 C MOVELMD ZDATCR P C MOVE YR ZDATCR C MOVE *BLANKS SFLSEL C MOVE SDLSFN HDSAVF C MOVE SDLSFL HDSAVL C ADD 1 RRN 21 C WRITESFLRCD C ENDDO C ENDSR *=============================================================== C PROCES BEGSR C *IN70 DOUEQ*ON C READCSFLRCD 70 C SFLSEL IFEQ '1' C *IN70 ANDEQ*OFF C RSTCN1 CAT ZDOCNM:0 CMDDS P C CAT RSTCN2:0 CMDDS C CAT ZFOLDR:0 CMDDS C CAT RSTCN3:0 CMDDS C CAT HDSAVL:0 CMDDS C CAT '/':0 CMDDS C CAT HDSAVF:0 CMDDS C CAT ')':0 CMDDS C CALL 'QCMDEXC' 99 C PARM CMDDS 140 C PARM 140 LEN 155 C MOVE *BLANKS SFLSEL C UPDATSFLRCD C ENDIF C ENDDO C 1 CHAINSFLRCD 68 C ZDOCNM SETLLARCDOCPF C ENDSR *=============================================================== C ROLLB BEGSR C RRN IFEQ *ZEROS C INDOCN SETLLARCDOCPF C ELSE C 1 CHAINSFLRCD 68 C ZDOCNM SETLLARCDOCPF C DO 8 C READPARCDOCPF 68 C *IN68 IFEQ *ON C *LOVAL SETLLARCDOCPF C LEAVE C ENDIF C ENDDO C ENDIF C ENDSR *. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
The Archive Documents Utility

Figure 8: The WRKARCDOC Display


BLOG COMMENTS POWERED BY DISQUS

LATEST COMMENTS

Support MC Press Online

$0.00 Raised:
$

Book Reviews

Resource Center

  • SB Profound WC 5536 Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application. You can find Part 1 here. In Part 2 of our free Node.js Webinar Series, Brian May teaches you the different tooling options available for writing code, debugging, and using Git for version control. Brian will briefly discuss the different tools available, and demonstrate his preferred setup for Node development on IBM i or any platform. Attend this webinar to learn:

  • SB Profound WP 5539More than ever, there is a demand for IT to deliver innovation. Your IBM i has been an essential part of your business operations for years. However, your organization may struggle to maintain the current system and implement new projects. The thousands of customers we've worked with and surveyed state that expectations regarding the digital footprint and vision of the company are not aligned with the current IT environment.

  • SB HelpSystems ROBOT Generic IBM announced the E1080 servers using the latest Power10 processor in September 2021. The most powerful processor from IBM to date, Power10 is designed to handle the demands of doing business in today’s high-tech atmosphere, including running cloud applications, supporting big data, and managing AI workloads. But what does Power10 mean for your data center? In this recorded webinar, IBMers Dan Sundt and Dylan Boday join IBM Power Champion Tom Huntington for a discussion on why Power10 technology is the right strategic investment if you run IBM i, AIX, or Linux. In this action-packed hour, Tom will share trends from the IBM i and AIX user communities while Dan and Dylan dive into the tech specs for key hardware, including:

  • Magic MarkTRY the one package that solves all your document design and printing challenges on all your platforms. Produce bar code labels, electronic forms, ad hoc reports, and RFID tags – without programming! MarkMagic is the only document design and print solution that combines report writing, WYSIWYG label and forms design, and conditional printing in one integrated product. Make sure your data survives when catastrophe hits. Request your trial now!  Request Now.

  • SB HelpSystems ROBOT GenericForms of ransomware has been around for over 30 years, and with more and more organizations suffering attacks each year, it continues to endure. What has made ransomware such a durable threat and what is the best way to combat it? In order to prevent ransomware, organizations must first understand how it works.

  • SB HelpSystems ROBOT GenericIT security is a top priority for businesses around the world, but most IBM i pros don’t know where to begin—and most cybersecurity experts don’t know IBM i. In this session, Robin Tatam explores the business impact of lax IBM i security, the top vulnerabilities putting IBM i at risk, and the steps you can take to protect your organization. If you’re looking to avoid unexpected downtime or corrupted data, you don’t want to miss this session.

  • SB HelpSystems ROBOT GenericCan you trust all of your users all of the time? A typical end user receives 16 malicious emails each month, but only 17 percent of these phishing campaigns are reported to IT. Once an attack is underway, most organizations won’t discover the breach until six months later. A staggering amount of damage can occur in that time. Despite these risks, 93 percent of organizations are leaving their IBM i systems vulnerable to cybercrime. In this on-demand webinar, IBM i security experts Robin Tatam and Sandi Moore will reveal:

  • FORTRA Disaster protection is vital to every business. Yet, it often consists of patched together procedures that are prone to error. From automatic backups to data encryption to media management, Robot automates the routine (yet often complex) tasks of iSeries backup and recovery, saving you time and money and making the process safer and more reliable. Automate your backups with the Robot Backup and Recovery Solution. Key features include:

  • FORTRAManaging messages on your IBM i can be more than a full-time job if you have to do it manually. Messages need a response and resources must be monitored—often over multiple systems and across platforms. How can you be sure you won’t miss important system events? Automate your message center with the Robot Message Management Solution. Key features include:

  • FORTRAThe thought of printing, distributing, and storing iSeries reports manually may reduce you to tears. Paper and labor costs associated with report generation can spiral out of control. Mountains of paper threaten to swamp your files. Robot automates report bursting, distribution, bundling, and archiving, and offers secure, selective online report viewing. Manage your reports with the Robot Report Management Solution. Key features include:

  • FORTRAFor over 30 years, Robot has been a leader in systems management for IBM i. With batch job creation and scheduling at its core, the Robot Job Scheduling Solution reduces the opportunity for human error and helps you maintain service levels, automating even the biggest, most complex runbooks. Manage your job schedule with the Robot Job Scheduling Solution. Key features include:

  • LANSA Business users want new applications now. Market and regulatory pressures require faster application updates and delivery into production. Your IBM i developers may be approaching retirement, and you see no sure way to fill their positions with experienced developers. In addition, you may be caught between maintaining your existing applications and the uncertainty of moving to something new.

  • LANSAWhen it comes to creating your business applications, there are hundreds of coding platforms and programming languages to choose from. These options range from very complex traditional programming languages to Low-Code platforms where sometimes no traditional coding experience is needed. Download our whitepaper, The Power of Writing Code in a Low-Code Solution, and:

  • LANSASupply Chain is becoming increasingly complex and unpredictable. From raw materials for manufacturing to food supply chains, the journey from source to production to delivery to consumers is marred with inefficiencies, manual processes, shortages, recalls, counterfeits, and scandals. In this webinar, we discuss how:

  • The MC Resource Centers bring you the widest selection of white papers, trial software, and on-demand webcasts for you to choose from. >> Review the list of White Papers, Trial Software or On-Demand Webcast at the MC Press Resource Center. >> Add the items to yru Cart and complet he checkout process and submit

  • Profound Logic Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application.

  • SB Profound WC 5536Join us for this hour-long webcast that will explore:

  • Fortra IT managers hoping to find new IBM i talent are discovering that the pool of experienced RPG programmers and operators or administrators with intimate knowledge of the operating system and the applications that run on it is small. This begs the question: How will you manage the platform that supports such a big part of your business? This guide offers strategies and software suggestions to help you plan IT staffing and resources and smooth the transition after your AS/400 talent retires. Read on to learn: