• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • Avoid an Unnecessary CPYF Error

    September 8, 2010 Ted Holt

    Hey, IBM i Professional:

    I’ve heard it said that it’s the little things that kill you. Maybe so. I am certain that little errors in computer programs can ruin a good night’s sleep. Today’s tip is an easy one that I’ve published before, but not in this newsletter. I’m running it today because an FHG reader recently told me that this simple, easily avoided error had occurred in the shop where she works. Everyone who writes CL programs needs to know this one.

    The malfunctioning program had a Copy File (CPYF) command that looked like this:

    CPYF FROMFILE(AAA) TOFILE(BBB) MBROPT(*REPLACE)
    

    This command is an accident waiting to happen. A command like this might run perfectly for years, but one day something changes (maybe it’s a change to the way the organization does business), and the command fails. Everybody is shocked, amazed, and astounded that software that worked well for so long suddenly doesn’t work anymore.

    The CPYF works fine as long as AAA is not empty. The contents of AAA replace BBB. But when the day finally comes that AAA contains no data, the CPYF command fails, sending two messages in the process:

    1. Diagnostic message CPF2869–Empty member AAA in file AAA in library SOMELIB is not copied.
    2. Escape CPF2817–Copy command ended because of error.

    Here are two simple ways to avoid this error:

    1. Clear the receiving file and use MBROPT(*ADD).

    CLRPFM  FILE(BBB)
    CPYF    FROMFILE(AAA) TOFILE(BBB) MBROPT(*ADD)
    

    2. Monitor for the escape message and clear the receiving file.

    CPYF    FROMFILE(AAA) TOFILE(BBB) MBROPT(*REPLACE)
    MONMSG  MSGID(CPF2817) EXEC(CLRPFM BBB)  /* AAA IS EMPTY */
    

    Both methods ensure that BBB looks just like AAA after the copy. Both methods ensure that this CPYF won’t get you out of bed at 3 a.m. if AAA turns up empty some day.

    I should make one last comment. I assume that the programmer’s intention is to create a duplicate of a file. That is, if the From file is empty, then the To file should also end up empty.

    But an empty From file may or may not be an error. For example, if the From file contains inventory adjustment transactions, and we didn’t have any inventory adjustments that day, then clearing the To file is appropriate.

    But suppose the From file is the customer master file. If that file is empty, it may mean that someone accidentally cleared the file. The CL program needs to raise an alert. This tip is not applicable when the From file is not supposed to be empty.



                         Post this story to del.icio.us
                   Post this story to Digg
        Post this story to Slashdot

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags:

    Sponsored by
    Rocket Software

    Unlock the full potential of your data with Rocket Software. Our scalable solutions deliver AI-driven insights, seamless integration, and advanced compliance tools to transform your business. Discover how you can simplify data management, boost efficiency, and drive informed decisions.

    Learn more today.

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Sponsored Links

    PowerTech:  FREE Webinar! Protect IBM i Data from FTP, ODBC, & Remote Command. Sept 15, 10 am CT
    looksoftware:  RPG OA & Beyond Webinar. Sept 28 & 29. Enter to win an Amazon Kindle™
    COMMON:  Join us at the Fall 2010 Conference & Expo, Oct. 4 - 6, in San Antonio, Texas

    IT Jungle Store Top Book Picks

    Easy Steps to Internet Programming for AS/400, iSeries, and System i: List Price, $49.95
    The iSeries Express Web Implementer's Guide: List Price, $49.95
    The System i RPG & RPG IV Tutorial and Lab Exercises: List Price, $59.95
    The System i Pocket RPG & RPG IV Guide: List Price, $69.95
    The iSeries Pocket Database Guide: List Price, $59.00
    The iSeries Pocket SQL Guide: List Price, $59.00
    The iSeries Pocket Query Guide: List Price, $49.00
    The iSeries Pocket WebFacing Primer: List Price, $39.00
    Migrating to WebSphere Express for iSeries: List Price, $49.00
    Getting Started With WebSphere Development Studio Client for iSeries: List Price, $89.00
    Getting Started with WebSphere Express for iSeries: List Price, $49.00
    Can the AS/400 Survive IBM?: List Price, $49.00
    Chip Wars: List Price, $29.95

    Magic Builds Out Partner Network in Europe IBM Adds New SSD and Fat SFF Disk to Power Systems

    Leave a Reply Cancel reply

Volume 10, Number 26 -- September 8, 2010
THIS ISSUE SPONSORED BY:

SEQUEL Software
WorksRight Software
inFORM Decisions

Table of Contents

  • Get Thee to the Web, Part 1
  • Avoid an Unnecessary CPYF Error
  • Admin Alert: Placing Additional Restrictions on i/OS Passwords

Content archive

  • The Four Hundred
  • Four Hundred Stuff
  • Four Hundred Guru

Recent Posts

  • Meet The Next Gen Of IBMers Helping To Build IBM i
  • Looks Like IBM Is Building A Linux-Like PASE For IBM i After All
  • Will Independent IBM i Clouds Survive PowerVS?
  • Now, IBM Is Jacking Up Hardware Maintenance Prices
  • IBM i PTF Guide, Volume 27, Number 24
  • Big Blue Raises IBM i License Transfer Fees, Other Prices
  • Keep The IBM i Youth Movement Going With More Training, Better Tools
  • Remain Begins Migrating DevOps Tools To VS Code
  • IBM Readies LTO-10 Tape Drives And Libraries
  • IBM i PTF Guide, Volume 27, Number 23

Subscribe

To get news from IT Jungle sent to your inbox every week, subscribe to our newsletter.

Pages

  • About Us
  • Contact
  • Contributors
  • Four Hundred Monitor
  • IBM i PTF Guide
  • Media Kit
  • Subscribe

Search

Copyright © 2025 IT Jungle