Index: /trunk/ppSub/src/ppSubArguments.c
===================================================================
--- /trunk/ppSub/src/ppSubArguments.c	(revision 42294)
+++ /trunk/ppSub/src/ppSubArguments.c	(revision 42295)
@@ -104,4 +104,5 @@
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-visual", 0, "Show diagnostic plots", NULL);
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-updatemode", 0, "update mode?", false);
+    psMetadataAddBool(arguments, PS_LIST_TAIL, "-require-subkernel", 0, "do not regenerate subkernel if missing?", false);
 
     if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 2) {
Index: /trunk/ppSub/src/ppSubCamera.c
===================================================================
--- /trunk/ppSub/src/ppSubCamera.c	(revision 42294)
+++ /trunk/ppSub/src/ppSubCamera.c	(revision 42295)
@@ -119,6 +119,10 @@
 
 
-// Define an output file that will be used in a calculation
-// This means it might already be available in the RUN metadata
+// Define an output file that will be used in a calculation. This means it might already be
+// available in the RUN metadata
+
+// EAM 2022.10.14 : If the file is not found, treat it as if it did not exist in the input
+// RUN metadata.  Currently, this is only used in this file to select
+// PPSUB.OUTPUT.KERNELS.
 static pmFPAfile *defineCalcFile(pmConfig *config, // Configuration
                                  pmFPAfile *bind,    // File to which to bind, or NULL
@@ -133,6 +137,11 @@
     pmFPAfile *file = pmFPAfileDefineFromRun(&status, NULL, config, filerule); // File to return
     if (!status) {
-        psError(psErrorCodeLast(), false, "Failed to load file definition for %s", filerule);
-        return NULL;
+      bool requireSubkernel = psMetadataLookupBool(NULL, config->arguments, "-require-subkernel");
+      if (requireSubkernel) {
+	psError(psErrorCodeLast(), false, "Failed to load file definition for %s", filerule);
+	return NULL;
+      } else {
+        psWarning("Failed to load file definition for %s, regenerate", filerule);
+      }
     }
     file = pmFPAfileBindFromArgs(&status, bind, config, filerule, argname);
