You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: pspm_jobman.m
    path of file: ./repos/PsPM/src
    
    the code of the file until where you have to start completion: function varargout = pspm_jobman(varargin)
% ● Description
%   Main interface for PsPM Batch System
%   Initialise jobs configuration and set MATLAB path accordingly.
% ● Format
%     pspm_jobman('initcfg')
%   → Run specified job
%     pspm_jobman('run',job)
%     output_list = pspm_jobman('run',job)
%   → Run specified job
%     job_id = pspm_jobman
%     job_id = pspm_jobman('interactive')
%     job_id = pspm_jobman('interactive',job)
%     job_id = pspm_jobman('interactive',job,node)
%     job_id = pspm_jobman('interactive','',node)
% ● Arguments
%   →
    
function [mljob, comp] = canonicalise_job(job)
%==========================================================================
function [mljob, comp] = canonicalise_job(job)
% job: a cell list of job data structures.
% Check whether job is a SPM5 or matlabbatch job. In the first case, all
% items in job{:} should have a fieldname of either 'temporal', 'spatial',
% 'stats', 'tools' or 'util'. If this is the case, then job will be
% assigned to mljob{1}.spm, which is the tag of the SPM root
% configuration item.

comp = true(size(job));
mljob = cell(size(job));
for cj = 1:numel(job)
  for k = 1:numel(job{cj})
    comp(cj) = comp(cj) && any(strcmp(fieldnames(job{cj}{k}), ...
      {'temporal', 'spatial', 'stats', 'tools', 'util'}));
    if ~comp(cj)
      break;
    end