• 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
    Maxava

    Disaster Recovery Strategy Guide for IBM i

    Practical tools to implement disaster recovery in your IBM i environment. Fully optimized to include cloud recovery, replication and monitoring options.

    Download NOW!

    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

  • IBM Unveils Manzan, A New Open Source Event Monitor For IBM i
  • Say Goodbye To Downtime: Update Your Database Without Taking Your Business Offline
  • i-Rays Brings Observability To IBM i Performance Problems
  • Another Non-TR “Technology Refresh” Happens With IBM i TR6
  • IBM i PTF Guide, Volume 27, Number 18
  • Will The Turbulent Economy Downdraft IBM Systems Or Lift It?
  • How IBM Improved The Database With IBM i 7.6
  • Rocket Celebrates 35th Anniversary As Private Equity Owner Ponders Sale
  • 50 Acres And A Humanoid Robot With An AI Avatar
  • IBM i PTF Guide, Volume 27, Number 17

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